[Xcb-commit] src

Jamey Sharp jamey at kemper.freedesktop.org
Tue Aug 24 09:30:51 PDT 2010


 src/xcb_in.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 2040f10a4efa95092bc9409c5b20347989b5f0a2
Author: Jamey Sharp <jamey at minilop.net>
Date:   Tue Aug 24 09:17:38 2010 -0700

    xcb_request_check: Sync even if an event was read for this sequence.
    
    This fixes the test case I have so far for Havoc's report that
    xcb_request_check hangs.
    
    Rationale: Since we have a void cookie, request_expected can't have been
    set equal to this sequence number when the request was sent; it can only
    have become equal due to the arrival of an event or error. If it became
    equal due to an event then we still need to sync. If it became equal due
    to an error, then request_completed will have been updated, which means
    we correctly won't sync.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=29599
    
    However, Havoc reports that he can still reproduce the problem, so we
    may be revisiting this later.
    
    Reported-by: Havoc Pennington <hp at pobox.com>
    Signed-off-by: Jamey Sharp <jamey at minilop.net>

diff --git a/src/xcb_in.c b/src/xcb_in.c
index 6dd358c..5a87466 100644
--- a/src/xcb_in.c
+++ b/src/xcb_in.c
@@ -564,7 +564,7 @@ xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t co
     void *reply;
     if(c->has_error)
         return 0;
-    if(XCB_SEQUENCE_COMPARE_32(cookie.sequence,>,c->in.request_expected)
+    if(XCB_SEQUENCE_COMPARE_32(cookie.sequence,>=,c->in.request_expected)
        && XCB_SEQUENCE_COMPARE_32(cookie.sequence,>,c->in.request_completed))
     {
         free(xcb_get_input_focus_reply(c, xcb_get_input_focus(c), &ret));


More information about the xcb-commit mailing list