]> git.sur5r.net Git - i3/i3/commitdiff
Don’t die, but ELOG and fallback when the pointer cannot be queried (Thanks Niklas)
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 20 Aug 2011 15:48:07 +0000 (17:48 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 20 Aug 2011 15:48:07 +0000 (17:48 +0200)
src/main.c

index 90e5eb06b323c06f9208ced7d0820517281e9b4e..77e295fcfbae74647ba5d7fbc02619e988975898 100644 (file)
@@ -430,18 +430,21 @@ int main(int argc, char *argv[]) {
     }
 
     xcb_query_pointer_reply_t *pointerreply;
-    if (!(pointerreply = xcb_query_pointer_reply(conn, pointercookie, NULL)))
-        die("Could not query pointer position\n");
-
-    DLOG("Pointer at %d, %d\n", pointerreply->root_x, pointerreply->root_y);
-    Output *output = get_output_containing(pointerreply->root_x, pointerreply->root_y);
-    if (!output) {
-        ELOG("ERROR: No screen at (%d, %d), starting on the first screen\n",
-             pointerreply->root_x, pointerreply->root_y);
+    Output *output = NULL;
+    if (!(pointerreply = xcb_query_pointer_reply(conn, pointercookie, NULL))) {
+        ELOG("Could not query pointer position, using first screen\n");
         output = get_first_output();
-    }
+    } else {
+        DLOG("Pointer at %d, %d\n", pointerreply->root_x, pointerreply->root_y);
+        output = get_output_containing(pointerreply->root_x, pointerreply->root_y);
+        if (!output) {
+            ELOG("ERROR: No screen at (%d, %d), starting on the first screen\n",
+                 pointerreply->root_x, pointerreply->root_y);
+            output = get_first_output();
+        }
 
-    con_focus(con_descend_focused(output_get_content(output->con)));
+        con_focus(con_descend_focused(output_get_content(output->con)));
+    }
 
     tree_render();