-void _xcb_lock_io(xcb_connection_t *c)
-{
- pthread_mutex_lock(&c->iolock);
- while(c->xlib.lock)
- {
- if(pthread_equal(c->xlib.thread, pthread_self()))
- break;
- pthread_cond_wait(&c->xlib.cond, &c->iolock);
- }
-}
-
-void _xcb_unlock_io(xcb_connection_t *c)
-{
- pthread_mutex_unlock(&c->iolock);
-}
-
-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();
- }
-}
-