summaryrefslogtreecommitdiff
path: root/xcb.c
diff options
context:
space:
mode:
authorMichael Stapelberg <michael@stapelberg.de>2010-07-20 21:07:39 +0200
committerMichael Stapelberg <michael@stapelberg.de>2010-07-20 21:07:39 +0200
commit7f42665245d9708b16d512215d6d0d106d6881f3 (patch)
treeb987628a7e9806c7ac94cca5bb3d2349b0c39a23 /xcb.c
parentc24922f0f2046b12a96f5cf9adc6f55f670ed990 (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.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/xcb.c b/xcb.c
index f19d5c2..41b007a 100644
--- a/xcb.c
+++ b/xcb.c
@@ -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)