From: Michael Stapelberg Date: Sun, 20 Aug 2017 10:14:12 +0000 (+0200) Subject: i3bar: Bugfix: avoid freeze after VisibilityNotify X-Git-Tag: 4.14~11^2 X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=commitdiff_plain;h=8106ae7923a4a94949435b65aca0aad303215432;ds=sidebyside i3bar: Bugfix: avoid freeze after VisibilityNotify fixes #2790 --- diff --git a/i3bar/src/xcb.c b/i3bar/src/xcb.c index 3bd5677a..2ba446b1 100644 --- a/i3bar/src/xcb.c +++ b/i3bar/src/xcb.c @@ -1255,6 +1255,12 @@ char *init_xcb_early() { ev_prepare_init(xcb_prep, &xcb_prep_cb); ev_check_init(xcb_chk, &xcb_chk_cb); + /* Within an event loop iteration, run the xcb_chk watcher last: other + * watchers might call xcb_flush(), which, unexpectedly, can also read + * events into the queue (see _xcb_conn_wait). Hence, we need to drain xcb’s + * queue last, otherwise we risk dead-locking. */ + ev_set_priority(xcb_chk, EV_MINPRI); + ev_io_start(main_loop, xcb_io); ev_prepare_start(main_loop, xcb_prep); ev_check_start(main_loop, xcb_chk);