Bugfix: make Plan 7 'checked' requests work correctly.
authorJamey Sharp <jamey@minilop.net>
Sun, 8 Oct 2006 01:35:53 +0000 (18:35 -0700)
committerJamey Sharp <jamey@minilop.net>
Sun, 8 Oct 2006 01:35:53 +0000 (18:35 -0700)
The initial implementation of Plan 7 dumped all X errors into the event
queue, because the record of a pending reply was pruned too early if an
error occurred in place of the expected reply.

src/xcb_in.c

index b252ffc..1cb6b69 100644 (file)
@@ -108,8 +108,6 @@ static int read_packet(xcb_connection_t *c)
             }
             c->in.request_completed = c->in.request_read - 1;
         }
-        if(genrep.response_type == XCB_ERROR)
-            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))
@@ -120,6 +118,9 @@ static int read_packet(xcb_connection_t *c)
                 c->in.pending_replies_tail = &c->in.pending_replies;
             free(oldpend);
         }
+
+        if(genrep.response_type == XCB_ERROR)
+            c->in.request_completed = c->in.request_read;
     }
 
     if(genrep.response_type == XCB_ERROR || genrep.response_type == XCB_REPLY)