-
Jamey Sharp authored
Previously, process_responses (the common code for _XReply, _XReadEvents, and _XEventsQueued) took the current request sequence number as an argument, and did some highly complicated processing to attempt to process responses in order across threads. This didn't actually work. Now, process_responses handles responses in order, by adding condition variables to the list of outstanding requests in dpy->xcb->pending_requests, and blocking on them when those requests should get processed to allow _XReply to process them; if actually called from _XReply, it returns when _XReply's request should get processed. _XReply broadcasts on the condition variable after it has read its reply and re-acquired the display lock. Another great commit brought to you by Jamey Sharp, Josh Triplett, the Gobby collaborative text editor, conspy, and ridiculous amounts of SSH forwarding. Signed-off-by: Josh Triplett <josh@freedesktop.org> Signed-off-by: Jamey Sharp <jamey@minilop.net>
67abe024