projects
/
free-sw
/
xcb
/
libxcb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "Introduce xcb_wait_for_event_until, for consuming responses in wire-order."
[free-sw/xcb/libxcb]
/
src
/
xcb_in.c
diff --git
a/src/xcb_in.c
b/src/xcb_in.c
index
1199e23
..
4acc3a2
100644
(file)
--- a/
src/xcb_in.c
+++ b/
src/xcb_in.c
@@
-167,7
+167,7
@@
static int read_packet(xcb_connection_t *c)
}
/* XGE events may have sizes > 32 */
}
/* XGE events may have sizes > 32 */
- if (
genrep.response_type
== XCB_XGE_EVENT)
+ if (
(genrep.response_type & 0x7f)
== XCB_XGE_EVENT)
eventlength = genrep.length * 4;
buf = malloc(length + eventlength +
eventlength = genrep.length * 4;
buf = malloc(length + eventlength +
@@
-527,7
+527,7
@@
xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c)
return ret;
}
return ret;
}
-
xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c
)
+
static xcb_generic_event_t *poll_for_next_event(xcb_connection_t *c, int queued
)
{
xcb_generic_event_t *ret = 0;
if(!c->has_error)
{
xcb_generic_event_t *ret = 0;
if(!c->has_error)
@@
-535,13
+535,23
@@
xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c)
pthread_mutex_lock(&c->iolock);
/* FIXME: follow X meets Z architecture changes. */
ret = get_event(c);
pthread_mutex_lock(&c->iolock);
/* FIXME: follow X meets Z architecture changes. */
ret = get_event(c);
- if(!ret && _xcb_in_read(c)) /* _xcb_in_read shuts down the connection on error */
+ if(!ret &&
!queued &&
_xcb_in_read(c)) /* _xcb_in_read shuts down the connection on error */
ret = get_event(c);
pthread_mutex_unlock(&c->iolock);
}
return ret;
}
ret = get_event(c);
pthread_mutex_unlock(&c->iolock);
}
return ret;
}
+xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c)
+{
+ return poll_for_next_event(c, 0);
+}
+
+xcb_generic_event_t *xcb_poll_for_queued_event(xcb_connection_t *c)
+{
+ return poll_for_next_event(c, 1);
+}
+
xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie)
{
uint64_t request;
xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie)
{
uint64_t request;