Commit Graph

9 Commits

Author SHA1 Message Date
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
18fb78307b Use struct buffer from cairo-util.c in flower.c. 2008-11-25 22:53:28 -05:00
Kristian Høgsberg
1cbaa6abac Use glib main loop for all clients. 2008-11-07 15:54:48 -05:00
Kristian Høgsberg
fb59084fbf Add glib main loop integration, use it in flower client. 2008-11-07 14:27:23 -05:00
Kristian Høgsberg
3f59e82c20 Use GL_ONE for the source in glBendFunc instead of pre-unmultiplying.
Eventually we need to allow both pre-multiplied alpha and not, but for now default to premultiplied.
2008-11-06 10:53:02 -05:00
Kristian Høgsberg
1b2f4390f5 Unpremultiply cairo surface data. 2008-11-06 10:53:02 -05:00
Kristian Høgsberg
d3fa34ca29 Don't use poll timeout for timing animation.
Receiving events breaks out of the poll and resets the time out.
Effectively, this blocks the animation when the client receives events.
As a quick fix, use timerfd for timing the animation.
2008-11-06 10:53:02 -05:00
Kristian Høgsberg
e120a4b1ee Rename client, prepare Makefile for more clients. 2008-11-06 10:51:59 -05:00