[CONTACT]

[ABOUT]

[POLICY]

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

Log

Files

Refs

README

LICENSE

---

commit f555908cef580106a50c53e096ec12bf4d2bb2e2

parent 73120414e2e4a3a8031b243fb0d893506d4a0dc1

Author: Anselm R. Garbe

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

diff --git a/main.c b/main.c

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


AD: