i3lock-color

The world's most popular non-default computer lockscreen.
Index Commits Files Refs README LICENSE
commit 7f42665245d9708b16d512215d6d0d106d6881f3
parent c24922f0f2046b12a96f5cf9adc6f55f670ed990
Author: Michael Stapelberg <michael@stapelberg.de>
Date:   Tue, 20 Jul 2010 21:07:39 +0200

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:
Mxcb.c | 9++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git 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)