attempt to grab the keyboard only 1000 times, not forever.
This commit is contained in:
parent
73120414e2
commit
f555908cef
2 changed files with 12 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
|||
# dmenu version
|
||||
VERSION = 2.7
|
||||
VERSION = 2.8
|
||||
|
||||
# Customize below to fit your system
|
||||
|
||||
|
|
16
main.c
16
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 */
|
||||
|
|
Loading…
Reference in a new issue