]> git.sur5r.net Git - i3/i3lock/commitdiff
grabbing: make the retry loop much slower (waits up to half a second)
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 20 Jul 2010 19:07:39 +0000 (21:07 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 20 Jul 2010 19:07:39 +0000 (21:07 +0200)
This should fix a race condition where the Mod-key was not released
in time when starting i3lock using a key combination.

xcb.c

diff --git a/xcb.c b/xcb.c
index f19d5c22fb9eb504e5f3dc058d12e376c7619dd8..41b007a3435b411e6ed1b8df7c2446f0b50d2b2f 100644 (file)
--- 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)