diff --git a/event/events.c b/event/events.c index 2900bd3..84e7f62 100644 --- a/event/events.c +++ b/event/events.c @@ -62,11 +62,23 @@ static int handle_event(xcb_event_handlers_t *evenths, xcb_generic_event_t *even return 0; } -void xcb_event_loop(xcb_event_handlers_t *evenths) +void xcb_wait_for_event_loop(xcb_event_handlers_t *evenths) { xcb_generic_event_t *event; while((event = xcb_wait_for_event(evenths->c))) { + event->response_type &= ~0x80; + handle_event(evenths, event); + free(event); + } +} + +void xcb_poll_for_event_loop(xcb_event_handlers_t *evenths) +{ + xcb_generic_event_t *event; + while ((event = xcb_poll_for_event(evenths->c))) + { + event->response_type &= ~0x80; handle_event(evenths, event); free(event); } diff --git a/event/xcb_event.h b/event/xcb_event.h index deb7ba8..9122893 100644 --- a/event/xcb_event.h +++ b/event/xcb_event.h @@ -14,7 +14,8 @@ xcb_event_handlers_t *xcb_alloc_event_handlers(xcb_connection_t *c); void xcb_free_event_handlers(xcb_event_handlers_t *evenths); xcb_connection_t *xcb_get_xcb_connection(xcb_event_handlers_t *evenths); -void xcb_event_loop(xcb_event_handlers_t *evenths); +void xcb_wait_for_event_loop(xcb_event_handlers_t *evenths); +void xcb_poll_for_event_loop(xcb_event_handlers_t *evenths); typedef int (*xcb_generic_event_handler_t)(void *data, xcb_connection_t *c, xcb_generic_event_t *event); typedef int (*xcb_generic_error_handler_t)(void *data, xcb_connection_t *c, xcb_generic_error_t *error); diff --git a/wm/xcbwm-test.c b/wm/xcbwm-test.c index 4d8be5d..c928d7a 100644 --- a/wm/xcbwm-test.c +++ b/wm/xcbwm-test.c @@ -205,7 +205,7 @@ int main(int argc, char **argv) if(TEST_THREADS) { - pthread_create(&event_thread, 0, (void *(*)(void *))xcb_event_loop, evenths); + pthread_create(&event_thread, 0, (void *(*)(void *))xcb_wait_for_event_loop, evenths); } root = xcb_aux_get_screen(c, screen_nbr)->root; @@ -223,7 +223,7 @@ int main(int argc, char **argv) if(TEST_THREADS) pthread_join(event_thread, 0); else - xcb_event_loop(evenths); + xcb_wait_for_event_loop(evenths); exit(0); /*NOTREACHED*/