- 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);
+ /* FIXME: this could hold the lock to avoid syncing unnecessarily, but
+ * that would require factoring the locking out of XCBGetInputFocus,
+ * XCBGetInputFocusReply, and XCBWaitForReply. */
+ XCBGenericError *ret;
+ void *reply;
+ 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.sequence, &ret);
+ assert(!reply);