]> git.sur5r.net Git - i3/i3/commitdiff
i3bar: Bugfix: Check if the X11 connection is unavailable
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 19 Sep 2011 18:17:25 +0000 (19:17 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 19 Sep 2011 18:17:25 +0000 (19:17 +0100)
This fixes the condition where the i3 socket for some reason did not produce an
error, but the X server exited (earlier than i3?) and the left-over i3bar
process would consume 100% CPU.

How to reproduce the problem:
1) Start ./testcases/Xdummy :8
2) Start DISPLAY=:8 i3bar -s <socket path to i3 on :0>
3) Kill the Xdummy

i3bar/src/xcb.c

index 51a2781ba65562dd1d3f2309c612d35aff2d402b..ac48ea5a2e871858e43145b3c1cc489da26baaca 100644 (file)
@@ -406,6 +406,12 @@ void xcb_prep_cb(struct ev_loop *loop, ev_prepare *watcher, int revents) {
  */
 void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
     xcb_generic_event_t *event;
+
+    if (xcb_connection_has_error(xcb_connection)) {
+        ELOG("X11 connection was closed unexpectedly - maybe your X server terminated / crashed?\n");
+        exit(1);
+    }
+
     while ((event = xcb_poll_for_event(xcb_connection)) == NULL) {
         return;
     }