Skip to content
  • Jamey Sharp's avatar
    Bug #8622: Fix response processing order for threaded apps · 67abe024
    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: default avatarJosh Triplett <josh@freedesktop.org>
    Signed-off-by: default avatarJamey Sharp <jamey@minilop.net>
    67abe024