i3bar: fix event handling
i3bar would only handle one event at a time instead of all pending events.
This commit is contained in:
parent
e85a352fcf
commit
7f9b65f6a7
|
@ -686,10 +686,7 @@ void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
while ((event = xcb_poll_for_event(xcb_connection)) == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
while ((event = xcb_poll_for_event(xcb_connection)) != NULL) {
|
||||
switch (event->response_type & ~0x80) {
|
||||
case XCB_EXPOSE:
|
||||
/* Expose-events happen, when the window needs to be redrawn */
|
||||
|
@ -705,6 +702,7 @@ void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
|
|||
handle_client_message((xcb_client_message_event_t*) event);
|
||||
break;
|
||||
case XCB_UNMAP_NOTIFY:
|
||||
case XCB_DESTROY_NOTIFY:
|
||||
/* UnmapNotifies are received when a tray window unmaps itself */
|
||||
handle_unmap_notify((xcb_unmap_notify_event_t*) event);
|
||||
break;
|
||||
|
@ -717,7 +715,8 @@ void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
|
|||
handle_configure_request((xcb_configure_request_event_t*) event);
|
||||
break;
|
||||
}
|
||||
FREE(event);
|
||||
free(event);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue