gri3-wm/i3bar/src
Michael Stapelberg 0d8b6714e3 Move XCB event handling into xcb_prepare_cb.
Previously, we used ev_check watchers, which are executed at the beginning of an
event loop iteration.

This was problematic if one of the handlers happened to fill the XCB event
queue, e.g. by reading a reply from X11 and an event happened in the meantime.

In that situation, we would hand control to the event loop, entirely ignoring
the pending event. This would manifest itself as a 1-minute hang,
reproducible (sometimes) in the i3 testsuite.

issue #2790 describes an instance of this issue in i3bar, and we fixed that by
changing the watcher priority to run last. Handling events in xcb_prepare_cb has
the same effect, as ev_prepare watchers are run just before the event loop goes
to sleep.
2017-10-23 21:06:13 +02:00
..
child.c i3bar: ensure get_buffer does not leak memory 2017-09-09 06:56:50 +02:00
config.c i3bar: only restart child when command changed (#2866) 2017-08-20 15:30:27 +02:00
ipc.c i3bar: fix segfault when no status_command is provided 2017-09-26 02:50:10 +03:00
main.c Use the DPI setting within the i3bar (#2556) 2016-11-12 06:34:54 -08:00
mode.c Ensure all *.[ch] files include config.h 2016-10-23 21:09:24 +02:00
outputs.c format i3bar src/outputs.c w/ clang-format 2017-04-02 19:26:55 -05:00
parse_json_header.c Ensure all *.[ch] files include config.h 2016-10-23 21:09:24 +02:00
workspaces.c Ensure all *.[ch] files include config.h 2016-10-23 21:09:24 +02:00
xcb.c Move XCB event handling into xcb_prepare_cb. 2017-10-23 21:06:13 +02:00