aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/main.c b/main.c
index 0f07773..fa03ec8 100644
--- a/main.c
+++ b/main.c
@@ -108,11 +108,17 @@ drawmenu(void) {
XFlush(dpy);
}
-static void
+static Bool
grabkeyboard(void) {
- while(XGrabKeyboard(dpy, root, True, GrabModeAsync,
- GrabModeAsync, CurrentTime) != GrabSuccess)
+ unsigned int len;
+
+ for(len = 1000; len; len--) {
+ if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime)
+ == GrabSuccess)
+ break;
usleep(1000);
+ }
+ return len > 0;
}
static unsigned long
@@ -456,10 +462,10 @@ main(int argc, char *argv[]) {
root = RootWindow(dpy, screen);
if(isatty(STDIN_FILENO)) {
maxname = readstdin();
- grabkeyboard();
+ running = grabkeyboard();
}
else { /* prevent keypress loss */
- grabkeyboard();
+ running = grabkeyboard();
maxname = readstdin();
}
/* init modifier map */