+void _xcb_wait_io(xcb_connection_t *c, pthread_cond_t *cond)
+{
+ int xlib_locked = c->xlib.lock;
+ if(xlib_locked)
+ {
+ c->xlib.lock = 0;
+ pthread_cond_broadcast(&c->xlib.cond);
+ }
+ pthread_cond_wait(cond, &c->iolock);
+ if(xlib_locked)
+ {
+ while(c->xlib.lock)
+ pthread_cond_wait(&c->xlib.cond, &c->iolock);
+ c->xlib.lock = 1;
+ c->xlib.thread = pthread_self();
+ }
+}
+