diff options
author | Michael Stapelberg <michael@stapelberg.de> | 2010-07-20 21:07:39 +0200 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2010-07-20 21:07:39 +0200 |
commit | 7f42665245d9708b16d512215d6d0d106d6881f3 (patch) | |
tree | b987628a7e9806c7ac94cca5bb3d2349b0c39a23 /xcb.c | |
parent | c24922f0f2046b12a96f5cf9adc6f55f670ed990 (diff) |
grabbing: make the retry loop much slower (waits up to half a second)
This should fix a race condition where the Mod-key was not released
in time when starting i3lock using a key combination.
Diffstat (limited to 'xcb.c')
-rw-r--r-- | xcb.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -13,6 +13,7 @@ #include <stdio.h> #include <stdlib.h> #include <stdbool.h> +#include <unistd.h> #include <assert.h> #include <err.h> @@ -138,7 +139,7 @@ void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen) { xcb_grab_keyboard_cookie_t kcookie; xcb_grab_keyboard_reply_t *kreply; - int tries = 1000; + int tries = 10000; while (tries-- > 0) { pcookie = xcb_grab_pointer( @@ -158,6 +159,9 @@ void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen) { free(preply); break; } + + /* Make this quite a bit slower */ + usleep(50); } while (tries-- > 0) { @@ -175,6 +179,9 @@ void grab_pointer_and_keyboard(xcb_connection_t *conn, xcb_screen_t *screen) { free(kreply); break; } + + /* Make this quite a bit slower */ + usleep(50); } if (tries <= 0) |