]> git.sur5r.net Git - i3/i3/commitdiff
Correctly exit when another window manager is already running
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 22 Dec 2009 10:29:24 +0000 (11:29 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 22 Dec 2009 10:29:24 +0000 (11:29 +0100)
This is implemented by checking if setting the redirect mask returned
an error or not.

src/mainx.c
src/util.c

index 1706294c45811533aa1fb0aae794458cab5c3362..9c38c4acd74b2c9c45f356b518fc9807c171234e 100644 (file)
@@ -377,7 +377,9 @@ int main(int argc, char *argv[], char *env[]) {
                               XCB_EVENT_MASK_POINTER_MOTION |
                               XCB_EVENT_MASK_PROPERTY_CHANGE |
                               XCB_EVENT_MASK_ENTER_WINDOW };
-        xcb_change_window_attributes(conn, root, mask, values);
+        xcb_void_cookie_t cookie;
+        cookie = xcb_change_window_attributes_checked(conn, root, mask, values);
+        check_error(conn, cookie, "Another window manager seems to be running");
 
         /* Setup NetWM atoms */
         #define GET_ATOM(name) { \
index 47bcc8fdd46e69ebcdac09fbfa173d6587eb3bd1..915f8cde0667a35e937dc8fcf852a92f249afb5c 100644 (file)
@@ -144,7 +144,7 @@ void start_application(const char *command) {
 void check_error(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message) {
         xcb_generic_error_t *error = xcb_request_check(conn, cookie);
         if (error != NULL) {
-                fprintf(stderr, "ERROR: %s : %d\n", err_message , error->error_code);
+                fprintf(stderr, "ERROR: %s (X error %d)\n", err_message , error->error_code);
                 xcb_disconnect(conn);
                 exit(-1);
         }