Re: [RFC PATCH] xlib-shm: Use XCB for SHM synchronization
Chris Wilson <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
On Sun, Dec 01, 2013 at 01:30:41PM +0100, Uli Schlachter wrote: > The old code used XSendEvent() to make sure that LastKnownRequestProcessed() > gets updated eventually and tracked sequence numbers to implement an > asynchronous XSync() through this. > > The problems with this is that XSetEventQueueOwner(dpy, XCBOwnsEventQueue) > changes semantics here and _XReadEvents() becomes a no-op. This broke the > implementation and would cause an endless loop in > _cairo_xlib_shm_surface_flush(). > > Additionally, the SHM event that is generated through XSendEvent() ended up in > the event queue and would need to be fetched by the main loop. Otherwise, the > event queue's size would grow and "some things" got slow. > > The new implementation uses xcb_get_input_focus() and xcb_poll_for_reply() to > implement the asynchronous XSync(). This causes more syncs to be done, because > the old optimization of "only call XSendEvent() when actually needed" no longer > applies. Also, this causes ownership of the X11 socket to be passed back and > forth between XCB and Xlib. > > TODO: Run the perf suite and check for regressions Not the perf suite but actual browser usage (e.g. midori). Not impressed though. -Chris -- Chris Wilson, Intel Open Source Technology Centre -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo