Correctly exit when another window manager is already running

This is implemented by checking if setting the redirect mask returned
an error or not.
This commit is contained in:
Michael Stapelberg 2009-12-22 11:29:24 +01:00
parent 500127705e
commit 9df64a8d0a
2 changed files with 4 additions and 2 deletions

View File

@ -377,7 +377,9 @@ int main(int argc, char *argv[], char *env[]) {
XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_POINTER_MOTION |
XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_PROPERTY_CHANGE |
XCB_EVENT_MASK_ENTER_WINDOW }; 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 */ /* Setup NetWM atoms */
#define GET_ATOM(name) { \ #define GET_ATOM(name) { \

View 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) { 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); xcb_generic_error_t *error = xcb_request_check(conn, cookie);
if (error != NULL) { 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); xcb_disconnect(conn);
exit(-1); exit(-1);
} }