Kristian Høgsberg
f52e03ff47
Import Eric Anholts hash table implementation
...
Adapted from git://people.freedesktop.org/~anholt/hash_table.
2010-02-26 11:42:59 -05:00
Kristian Høgsberg
a5db589efa
Add wl_list_for_each() and simplify some loops
2010-02-26 10:28:44 -05:00
Kristian Høgsberg
b559fcbf72
Add function to remove surfaces from client
2009-09-18 17:05:50 -04:00
Kristian Høgsberg
b3131d9268
Add client side demarshalling for events.
...
This also consolidates the marshalling code in connection.c and
uses the same functions in the server and client for marshalling.
2008-12-24 19:31:58 -05:00
Kristian Høgsberg
ee02ca6fa4
Add hook to allow globals to send cold-plug events to new clients.
...
This lets us boot strap the client side state cache. This commit also adds the first user
of this feature, an output object that represents the current output. Very simple
at this point, but will grow to something more like RandR 1.2.
2008-12-21 23:37:12 -05:00
Kristian Høgsberg
97079ad52c
Send client id range as an event.
...
This also makes the server send the event again when the client is
about to exhaust its current client range.
2008-12-21 22:45:33 -05:00
Kristian Høgsberg
fb6d68ddbe
Represent event and method metadata with struct wl_message.
2008-12-21 21:57:45 -05:00
Kristian Høgsberg
fe831a7494
Move protocol metadata to wayland-protocol.[ch].
...
This lets us share the metadata between server and client and we
can now use a va_arg marshalling function for sending client
requets.
2008-12-21 21:50:36 -05:00
Kristian Høgsberg
bf967b469f
Advertise globals using a new display event.
2008-12-21 20:25:16 -05:00
Kristian Høgsberg
de31d5ca6f
Add preliminary visual support.
2008-12-18 17:55:33 -05:00
Kristian Høgsberg
d2412e2c2e
Redesign the compositor / server interface.
...
This lets the compositor directly provide the implementation of the RMI
objects for the surface object and a new compositor object. We avoid the
manual forwarding of requests into the compositor and the clumsy compositor
interface struct.
2008-12-15 20:35:24 -05:00
Kristian Høgsberg
c492b482d0
Make multi-pointer work.
...
This also add command line parsing as a way to specify the input
device files to use.
2008-12-12 12:17:51 -05:00
Kristian Høgsberg
864c468b42
Make sure we initialize object hash.
...
This patch also move the hash implementation details to wayland-util.c.
2008-12-12 12:17:47 -05:00
Kristian Høgsberg
5ee1a60f1a
Rewrite input event delivery path.
...
Instead of having the input driver push the events into the core server,
only to have the server call back out to the compositor hooks, the driver now
just calls the compositor directly. The input drivers are always dependent on
the type of compositor anyway so there was no point in passing the events
through the server. Now the server is only involved when it's time to actually
send the events to the clients.
2008-12-11 23:18:45 -05:00
Kristian Høgsberg
7fdff04cdc
Only send key events to toplevel surface.
2008-12-10 13:25:00 -05:00
Kristian Høgsberg
5a75c90d01
Feed button events through compositor.
...
This also generalizes the code to send events to a surface a bit.
2008-12-10 13:16:50 -05:00
Kristian Høgsberg
715a081cf4
Feed motion events through compositor.
...
This lets us pass events only to the window that we're mousing over
and we can now transform input events back to the window coordinate space.
2008-12-10 10:42:04 -05:00
Kristian Høgsberg
201a904889
Drop surface iterator API, just track surfaces in the compositor.
2008-12-10 00:40:50 -05:00
Kristian Høgsberg
eac149ad06
Pass button clicks through to compositor.
...
This lets us handle raising windows, which is useful.
2008-12-10 00:24:18 -05:00
Kristian Høgsberg
dc0f355f0a
Fix API to always include socket name length.
2008-12-07 15:22:22 -05:00
Kristian Høgsberg
122912c69b
Make the wayland server a library used by the compositors.
2008-12-05 11:13:50 -05:00
Kristian Høgsberg
87e0a384da
Use type strings for method and event signatures.
2008-12-05 10:38:42 -05:00
Kristian Høgsberg
35052568d0
Exit if load_compositor() fails.
2008-12-02 15:38:53 -05:00
Kristian Høgsberg
ffd710e653
Put Wayland under the MIT license.
2008-12-02 15:15:01 -05:00
Kristian Høgsberg
c2b633e6c2
Add wl_client_marshal() for sending events.
2008-11-28 19:12:45 -05:00
Kristian Høgsberg
4a29890da7
Generalize event loop a bit and pull in the timerfd stuff.
2008-11-28 18:35:25 -05:00
Kristian Høgsberg
fbdbbdc153
Finally implement the commit/ack/frame protocol and improve repaint loop.
...
This implements the commit/ack/frame protocol that let clients batch up
a series of requests and then commit them atomically using the commit request.
The commit requests generats two following events: the acknowledge event,
which lets the client know that the server has received the request and
which frame the rendering has been scheduled for. At this point the client
can start rendering the next frame or free up temporary buffers. Then when
the compositor finally makes the newly composited frame visible on screen
the server sends a frame event, which contains the number of the frame that
was presented and the time when it happened.
The window and flower clients have been updated to use these two events in
their main loops and everything now updates per frame. The EGL compositor
repaint loop has been tweaked to delay the compositing of the screen to
10ms after last swapbuffer completed so as to allow processing as many
requests as possible before blocking on the next vertical retrace.
2008-11-28 17:06:10 -05:00
Kristian Høgsberg
44f36e3585
Make ack event signal that the requests have been composited.
2008-11-26 12:57:31 -05:00
Kristian Høgsberg
4097923a64
Add commit request + ack event to wayland core.
...
Use in window.c to manage life cycle of buffer correctly.
2008-11-25 22:40:39 -05:00
Kristian Høgsberg
cddc0ad502
Add keyboard input, move input device creation to compositor.
2008-11-24 00:31:49 -05:00
Kristian Høgsberg
1e4b86af1a
Expose screenshooting as an interface, drop SIGUSR hack.
...
This pulls in a bit of extra infrastructure for discovering adertised objects on the
client side.
2008-11-24 00:06:16 -05:00
Kristian Høgsberg
14fcff7726
Generalize the object advertising mechanism.
2008-11-23 19:10:23 -05:00
Kristian Høgsberg
4c9f2c9b1a
Move pointer drawing into compositor.
2008-11-21 19:25:44 -05:00
Kristian Høgsberg
b7a01928be
Add prototypes warnings, use -fvisibility.
2008-11-08 15:49:49 -05:00
Kristian Høgsberg
7f77bd8fbe
Add copy and damage surface requests.
2008-11-07 08:39:37 -05:00
Kristian Høgsberg
5503bf82c4
dlopen the compositor, add a glx compositor.
2008-11-06 10:53:03 -05:00
Kristian Høgsberg
33a52bd07d
Add README for the adventurous, allow evdev override from getenv().
2008-11-06 10:53:02 -05:00
Kristian Høgsberg
f9bc795a7d
Add crude input device support.
...
Just pointer motion and button clicks for now, broadcast to all clients.
2008-11-06 10:51:59 -05:00
Kristian Høgsberg
94a2e86dcb
Track client objects and destroy them on disconnect.
...
We're going to need a virtual destructor eventually...
2008-11-06 10:51:58 -05:00
Kristian Høgsberg
5ebb317383
Recomposite screen in idle handler.
2008-11-06 10:51:58 -05:00
Kristian Høgsberg
f921289954
Handle multiple clients better.
2008-11-06 10:51:58 -05:00
Kristian Høgsberg
680f1c7025
Split out connection io buffer logic.
2008-11-06 10:51:58 -05:00
Kristian Høgsberg
c5089878cb
Make in and out circular buffers actually work.
2008-11-06 10:51:57 -05:00
Kristian Høgsberg
05eff51e41
Add surface.map request.
2008-11-06 10:51:43 -05:00
Kristian Høgsberg
a67a71a7cf
Bunch of new stuff: simple compositor, cairo+gem use in client, events.
2008-10-07 10:10:36 -04:00
Kristian Høgsberg
97f1ebe8d5
Initial commit.
...
This has the basic event loop, and a first cut of the libffi dispatcher.
2008-09-30 09:56:42 -04:00