Browse Source

attempt to grab the keyboard only 1000 times, not forever.

master
Anselm R. Garbe 17 years ago
parent
commit
f555908cef
2 changed files with 12 additions and 6 deletions
  1. +1
    -1
      config.mk
  2. +11
    -5
      main.c

+ 1
- 1
config.mk View File

@@ -1,5 +1,5 @@
# dmenu version
VERSION = 2.7
VERSION = 2.8

# Customize below to fit your system



+ 11
- 5
main.c View File

@@ -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 */


Loading…
Cancel
Save