X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=xcb.c;h=d8423109df41075e206f548dbcf6f0cefc9a4d2a;hb=14667d8304382bb766ddbab5c58c2c81bfe16b6c;hp=92c78469c664a5e1c0819f4bb4d6fa815112af81;hpb=1c97a8484723b7db6c96c3b7bfa4c86c26f47b5a;p=i3%2Fi3lock diff --git a/xcb.c b/xcb.c index 92c7846..d842310 100644 --- a/xcb.c +++ b/xcb.c @@ -23,6 +23,8 @@ #include "cursors.h" #include "unlock_indicator.h" +extern auth_state_t auth_state; + xcb_connection_t *conn; xcb_screen_t *screen; @@ -160,7 +162,7 @@ xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, c } /* - * Repeatedly tries to grab pointer and keyboard (up to 1000 times). + * Repeatedly tries to grab pointer and keyboard (up to 10000 times). * */ void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen, xcb_cursor_t cursor) { @@ -233,8 +235,14 @@ void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen, xcb } } - if (tries <= 0) + /* After trying for 10000 times, i3lock will display an error message + * for 2 sec prior to terminate. */ + if (tries <= 0) { + auth_state = STATE_I3LOCK_LOCK_FAILED; + redraw_screen(); + sleep(1); errx(EXIT_FAILURE, "Cannot grab pointer/keyboard"); + } } xcb_cursor_t create_cursor(xcb_connection_t *conn, xcb_screen_t *screen, xcb_window_t win, int choice) {