- _xcb_list_append(c->in.readers, &reader);
-
- /* If this request has not been read yet, wait for it. */
- while(((signed int) (c->in.request_read - request) < 0 ||
- (c->in.request_read == request && !c->in.current_reply)))
- if(!_xcb_conn_wait(c, /*should_write*/ 0, &cond))
+ reader.next = *prev_reader;
+ *prev_reader = &reader;
+
+ /* If this request has not completed yet and has no reply waiting,
+ * wait for one. */
+ while(c->in.request_completed < request &&
+ !(c->in.request_read == request && c->in.current_reply))
+ if(!_xcb_conn_wait(c, &cond, 0, 0))