Spinning in _XReply
Rami Ylimäki
rami.ylimaki at vincit.fi
Wed Feb 23 02:15:47 PST 2011
On 02/22/2011 11:26 PM, xmail at karlt.net wrote:
> Although wrong, our code has been working well enough for us to get
> useful information. If someone is able to point out a reason why
> this now works less successfully than previously, then that would
> bump up the priority at our end.
By superficially looking at the Xlib code, the behavior in older Xlib
version (1.3.3) is different depending on whether Xlib is configured
--with-xcb or --without-xcb. When Xcb is disabled, error handler is
called with display unlocked and _XReply seems to be prepared to handle
requests from error handler. With Xcb, which is the default now with
Xlib 1.4, the display remains locked during error handling and nested
requests aren't allowed.
Even the older _XReply contains a comment indicating that doing requests
from an error handler wasn't considered good behavior even though it
happened to work previously:
/* Pull out the serial number now, so that (currently illegal) requests
* generated by an error handler don't confuse us.
*/
> The information we want is already on display->ext_procs->codes
> but "This structure is private to the library." I'm not aware of
> a public API to get this information from Xlib.
>
> I guess we could use a separate connection to query the extension
> codes. Is it reasonable to assume that all connections to the
> same display would use the same codes?
X server seems to preserve the extension codes until the server is
regenerated and therefore all connections should use the same codes.
-- Rami
More information about the xorg-devel
mailing list