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:
parent
500127705e
commit
9df64a8d0a
|
@ -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) { \
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue