Improve drag_pointer error handling
Log errors generated by failed pointer grabs and ungrab the pointer after failed keyboard grabs.
This commit is contained in:
parent
62a4237ed0
commit
759c26fc02
|
@ -682,6 +682,8 @@ drag_result_t drag_pointer(Con *con, const xcb_button_press_event_t *event, xcb_
|
||||||
/* Grab the pointer */
|
/* Grab the pointer */
|
||||||
xcb_grab_pointer_cookie_t cookie;
|
xcb_grab_pointer_cookie_t cookie;
|
||||||
xcb_grab_pointer_reply_t *reply;
|
xcb_grab_pointer_reply_t *reply;
|
||||||
|
xcb_generic_error_t *error;
|
||||||
|
|
||||||
cookie = xcb_grab_pointer(conn,
|
cookie = xcb_grab_pointer(conn,
|
||||||
false, /* get all pointer events specified by the following mask */
|
false, /* get all pointer events specified by the following mask */
|
||||||
root, /* grab the root window */
|
root, /* grab the root window */
|
||||||
|
@ -692,8 +694,9 @@ drag_result_t drag_pointer(Con *con, const xcb_button_press_event_t *event, xcb_
|
||||||
xcursor, /* possibly display a special cursor */
|
xcursor, /* possibly display a special cursor */
|
||||||
XCB_CURRENT_TIME);
|
XCB_CURRENT_TIME);
|
||||||
|
|
||||||
if ((reply = xcb_grab_pointer_reply(conn, cookie, NULL)) == NULL) {
|
if ((reply = xcb_grab_pointer_reply(conn, cookie, &error)) == NULL) {
|
||||||
ELOG("Could not grab pointer\n");
|
ELOG("Could not grab pointer (error_code = %d)\n", error->error_code);
|
||||||
|
free(error);
|
||||||
return DRAG_ABORT;
|
return DRAG_ABORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,8 +714,10 @@ drag_result_t drag_pointer(Con *con, const xcb_button_press_event_t *event, xcb_
|
||||||
XCB_GRAB_MODE_ASYNC /* keyboard mode */
|
XCB_GRAB_MODE_ASYNC /* keyboard mode */
|
||||||
);
|
);
|
||||||
|
|
||||||
if ((keyb_reply = xcb_grab_keyboard_reply(conn, keyb_cookie, NULL)) == NULL) {
|
if ((keyb_reply = xcb_grab_keyboard_reply(conn, keyb_cookie, &error)) == NULL) {
|
||||||
ELOG("Could not grab keyboard\n");
|
ELOG("Could not grab keyboard (error_code = %d)\n", error->error_code);
|
||||||
|
free(error);
|
||||||
|
xcb_ungrab_pointer(conn, XCB_CURRENT_TIME);
|
||||||
return DRAG_ABORT;
|
return DRAG_ABORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue