summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamey Sharp <jamey@minilop.net>2010-08-24 09:17:38 -0700
committerJamey Sharp <jamey@minilop.net>2010-08-24 09:29:59 -0700
commit2040f10a4efa95092bc9409c5b20347989b5f0a2 (patch)
treeb7bbc2218046c3c2c7af07f1e782c5a61cb83538
parent35f901a0f2bc3f5bb30dc6ff9d791679c9e84c05 (diff)
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@pobox.com> Signed-off-by: Jamey Sharp <jamey@minilop.net>
-rw-r--r--src/xcb_in.c2
1 files changed, 1 insertions, 1 deletions
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));