--- old/src/xcb_xlib.c 2007-11-22 14:48:26.544068901 +0100 +++ new/src/xcb_xlib.c 2007-11-22 14:52:45.474129821 +0100 @@ -70,18 +70,22 @@ void xcb_xlib_lock(xcb_connection_t *c) { _xcb_lock_io(c); - xcb_assert(c, !c->xlib.lock); - c->xlib.lock = 1; - c->xlib.thread = pthread_self(); + if (c->xlib.lock) { + xcb_assert(c, !c->xlib.lock); + c->xlib.lock = 1; + c->xlib.thread = pthread_self(); + } _xcb_unlock_io(c); } void xcb_xlib_unlock(xcb_connection_t *c) { _xcb_lock_io(c); - xcb_assert(c, c->xlib.lock); - xcb_assert(c, pthread_equal(c->xlib.thread, pthread_self())); - c->xlib.lock = 0; - pthread_cond_broadcast(&c->xlib.cond); + if (c->xlib.lock) { + xcb_assert(c, c->xlib.lock); + xcb_assert(c, pthread_equal(c->xlib.thread, pthread_self())); + c->xlib.lock = 0; + pthread_cond_broadcast(&c->xlib.cond); + } _xcb_unlock_io(c); }