Fix bug #7261: events do not signal the end of replies for that sequence number.
[free-sw/xcb/libxcb] / src / xcb_in.c
index d1118fd..d4dbb3f 100644 (file)
@@ -108,8 +108,8 @@ static int read_packet(XCBConnection *c)
             }
             c->in.request_completed = c->in.request_read - 1;
         }
-        if(genrep.response_type != XCBReply) /* error or event */
-            c->in.request_completed = c->in.request_read; /* XXX: does event/error imply no more replies? */
+        if(genrep.response_type == XCBError)
+            c->in.request_completed = c->in.request_read;
 
         while(c->in.pending_replies && 
              XCB_SEQUENCE_COMPARE (c->in.pending_replies->request, <=, c->in.request_completed))
@@ -363,11 +363,6 @@ int XCBPollForReply(XCBConnection *c, unsigned int request, void **reply, XCBGen
     return ret;
 }
 
-XCBGenericEvent *XCBWaitEvent(XCBConnection *c)
-{
-    return XCBWaitForEvent(c);
-}
-
 XCBGenericEvent *XCBWaitForEvent(XCBConnection *c)
 {
     XCBGenericEvent *ret;
@@ -409,28 +404,17 @@ XCBGenericError *XCBRequestCheck(XCBConnection *c, XCBVoidCookie cookie)
      * XCBGetInputFocusReply, and XCBWaitForReply. */
     XCBGenericError *ret;
     void *reply;
-    if(XCB_SEQUENCE_COMPARE(cookie.request,>,c->in.request_expected)
-       && XCB_SEQUENCE_COMPARE(cookie.request,>,c->in.request_completed))
+    if(XCB_SEQUENCE_COMPARE(cookie.sequence,>,c->in.request_expected)
+       && XCB_SEQUENCE_COMPARE(cookie.sequence,>,c->in.request_completed))
     {
         free(XCBGetInputFocusReply(c, XCBGetInputFocus(c), &ret));
         assert(!ret);
     }
-    reply = XCBWaitForReply(c, cookie.request, &ret);
+    reply = XCBWaitForReply(c, cookie.sequence, &ret);
     assert(!reply);
     return ret;
 }
 
-unsigned int XCBGetRequestRead(XCBConnection *c)
-{
-    unsigned int ret;
-    pthread_mutex_lock(&c->iolock);
-    /* FIXME: follow X meets Z architecture changes. */
-    _xcb_in_read(c);
-    ret = c->in.request_read;
-    pthread_mutex_unlock(&c->iolock);
-    return ret;
-}
-
 /* Private interface */
 
 int _xcb_in_init(_xcb_in *in)