git clone dmenu dmenu Log gph
Found at: gopher.r-36.net:70/scm/dmenu/commit/f555908cef580106a50c53e096ec12bf4d2bb2e2.gph
tattempt to grab the keyboard only 1000 times, not forever. - dmenu - Dmenu fork with xft fonts.
git clone git://r-36.net/dmenu
---
commit f555908cef580106a50c53e096ec12bf4d2bb2e2
parent 73120414e2e4a3a8031b243fb0d893506d4a0dc1
Date: Wed, 7 Mar 2007 11:01:14 +0100
attempt to grab the keyboard only 1000 times, not forever.
Diffstat:
config.mk | 2 +-
main.c | 16 +++++++++++-----
2 files changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/config.mk b/config.mk
t@@ -1,5 +1,5 @@
# dmenu version
-VERSION = 2.7
+VERSION = 2.8
# Customize below to fit your system
t@@ -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
t@@ -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 */
.