diff options
author | eplanet <emeric.planet@gmail.com> | 2016-10-11 22:40:51 +0200 |
---|---|---|
committer | Michael Stapelberg <stapelberg@users.noreply.github.com> | 2016-10-11 13:40:51 -0700 |
commit | d2130092cf588c02d7a0e74c0de85dc261b6823b (patch) | |
tree | e31a2c0b2d8dfb791cfad874f12b1d41be36a68c /xcb.c | |
parent | 1c97a8484723b7db6c96c3b7bfa4c86c26f47b5a (diff) |
Display error message when locking failed (#99)
To give a feedback for when the pointer couldn't be grabbed,
displaying an error message before exiting.
Diffstat (limited to 'xcb.c')
-rw-r--r-- | xcb.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -23,6 +23,8 @@ #include "cursors.h" #include "unlock_indicator.h" +extern pam_state_t pam_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) { + pam_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) { |