Introduction
Introduction Statistics Contact Development Disclaimer Help
error messages on grab failure - slock - simple X display locker utility
git clone git://git.suckless.org/slock
Log
Files
Refs
README
LICENSE
---
commit 9dfe0ce531023bf63c0e518b07ee97cf0cac742a
parent 55e827af0fb94f6c2b9e76a7bfe7e98cf697dc7b
Author: Markus Teich <[email protected]>
Date: Mon, 18 Jan 2016 16:49:15 +0100
error messages on grab failure
Diffstat:
M slock.c | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)
---
diff --git a/slock.c b/slock.c
@@ -230,7 +230,7 @@ lockscreen(Display *dpy, int screen)
XSetWindowAttributes wa;
Cursor invisible;
- if (dpy == NULL || screen < 0 || !(lock = malloc(sizeof(Lock))))
+ if (!running || dpy == NULL || screen < 0 || !(lock = malloc(sizeof(Lo…
return NULL;
lock->screen = screen;
@@ -253,29 +253,31 @@ lockscreen(Display *dpy, int screen)
XMapRaised(dpy, lock->win);
if (rr)
XRRSelectInput(dpy, lock->win, RRScreenChangeNotifyMask);
+
+ /* Try to grab mouse pointer *and* keyboard, else fail the lock */
for (len = 1000; len; len--) {
if (XGrabPointer(dpy, lock->root, False, ButtonPressMask | But…
GrabModeAsync, GrabModeAsync, None, invisible, CurrentTime…
break;
usleep(1000);
}
- if (running && len) {
+ if (!len) {
+ fprintf(stderr, "slock: unable to grab mouse pointer for scree…
+ } else {
for (len = 1000; len; len--) {
- if (XGrabKeyboard(dpy, lock->root, True, GrabModeAsync…
- break;
+ if (XGrabKeyboard(dpy, lock->root, True, GrabModeAsync…
+ /* everything fine, we grabbed both inputs */
+ XSelectInput(dpy, lock->root, SubstructureNoti…
+ return lock;
+ }
usleep(1000);
}
+ fprintf(stderr, "slock: unable to grab keyboard for screen %d\…
}
-
- running &= (len > 0);
- if (!running) {
- unlockscreen(dpy, lock);
- lock = NULL;
- } else {
- XSelectInput(dpy, lock->root, SubstructureNotifyMask);
- }
-
- return lock;
+ /* grabbing one of the inputs failed */
+ running = 0;
+ unlockscreen(dpy, lock);
+ return NULL;
}
static void
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.