Lines 38-55
Link Here
|
38 |
void xcb_xlib_lock(xcb_connection_t *c) |
38 |
void xcb_xlib_lock(xcb_connection_t *c) |
39 |
{ |
39 |
{ |
40 |
_xcb_lock_io(c); |
40 |
_xcb_lock_io(c); |
41 |
assert(!c->xlib.lock); |
41 |
if (!c->xlib.lock) { |
42 |
c->xlib.lock = 1; |
42 |
c->xlib.lock = 1; |
43 |
c->xlib.thread = pthread_self(); |
43 |
c->xlib.thread = pthread_self(); |
|
|
44 |
} |
44 |
_xcb_unlock_io(c); |
45 |
_xcb_unlock_io(c); |
45 |
} |
46 |
} |
46 |
|
47 |
|
47 |
void xcb_xlib_unlock(xcb_connection_t *c) |
48 |
void xcb_xlib_unlock(xcb_connection_t *c) |
48 |
{ |
49 |
{ |
49 |
_xcb_lock_io(c); |
50 |
_xcb_lock_io(c); |
50 |
assert(c->xlib.lock); |
51 |
if (c->xlib.lock) { |
51 |
assert(pthread_equal(c->xlib.thread, pthread_self())); |
52 |
assert(pthread_equal(c->xlib.thread, pthread_self())); |
52 |
c->xlib.lock = 0; |
53 |
c->xlib.lock = 0; |
53 |
pthread_cond_broadcast(&c->xlib.cond); |
54 |
pthread_cond_broadcast(&c->xlib.cond); |
|
|
55 |
} |
54 |
_xcb_unlock_io(c); |
56 |
_xcb_unlock_io(c); |
55 |
} |
57 |
} |