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*/

