Lines 704-717
Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard)
Link Here
|
704 |
if(dpy->xcb->event_owner == XlibOwnsEventQueue) |
704 |
if(dpy->xcb->event_owner == XlibOwnsEventQueue) |
705 |
{ |
705 |
{ |
706 |
xcb_generic_reply_t *event; |
706 |
xcb_generic_reply_t *event; |
707 |
|
707 |
/* If some thread is already waiting for events, |
708 |
/* Assume event queue is empty if another thread is blocking |
708 |
* it will get the first one. That thread must |
709 |
* waiting for event. */ |
709 |
* process that event before we can continue. */ |
710 |
if(!dpy->xcb->event_waiter) |
710 |
/* FIXME: That event might be after this reply, |
711 |
{ |
711 |
* and might never even come--or there might be |
712 |
while((event = poll_for_response(dpy))) |
712 |
* multiple threads trying to get events. */ |
713 |
handle_response(dpy, event, True); |
713 |
while(dpy->xcb->event_waiter) |
714 |
} |
714 |
{ /* need braces around ConditionWait */ |
|
|
715 |
ConditionWait(dpy, dpy->xcb->event_notify); |
716 |
} |
717 |
while((event = poll_for_event(dpy, True))) |
718 |
handle_response(dpy, event, True); |
715 |
} |
719 |
} |
716 |
|
720 |
|
717 |
req->reply_waiter = 0; |
721 |
req->reply_waiter = 0; |
718 |
- |
|
|