diff options
-rw-r--r-- | slock.c | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -58,7 +58,7 @@ main(int argc, char **argv) { | |||
58 | Display *dpy; | 58 | Display *dpy; |
59 | KeySym ksym; | 59 | KeySym ksym; |
60 | Pixmap pmap; | 60 | Pixmap pmap; |
61 | Window w; | 61 | Window root, w; |
62 | XColor black, dummy; | 62 | XColor black, dummy; |
63 | XEvent ev; | 63 | XEvent ev; |
64 | XSetWindowAttributes wa; | 64 | XSetWindowAttributes wa; |
@@ -73,12 +73,12 @@ main(int argc, char **argv) { | |||
73 | exit(EXIT_FAILURE); | 73 | exit(EXIT_FAILURE); |
74 | } | 74 | } |
75 | screen = DefaultScreen(dpy); | 75 | screen = DefaultScreen(dpy); |
76 | root = RootWindow(dpy, screen); | ||
76 | 77 | ||
77 | /* init */ | 78 | /* init */ |
78 | wa.override_redirect = 1; | 79 | wa.override_redirect = 1; |
79 | wa.background_pixel = BlackPixel(dpy, screen); | 80 | wa.background_pixel = BlackPixel(dpy, screen); |
80 | w = XCreateWindow(dpy, RootWindow(dpy, screen), 0, 0, | 81 | w = XCreateWindow(dpy, root, 0, 0, DisplayWidth(dpy, screen), DisplayHeight(dpy, screen), |
81 | DisplayWidth(dpy, screen), DisplayHeight(dpy, screen), | ||
82 | 0, DefaultDepth(dpy, screen), CopyFromParent, | 82 | 0, DefaultDepth(dpy, screen), CopyFromParent, |
83 | DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixel, &wa); | 83 | DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixel, &wa); |
84 | 84 | ||
@@ -86,15 +86,21 @@ main(int argc, char **argv) { | |||
86 | pmap = XCreateBitmapFromData(dpy, w, curs, 8, 8); | 86 | pmap = XCreateBitmapFromData(dpy, w, curs, 8, 8); |
87 | invisible = XCreatePixmapCursor(dpy, pmap, pmap, &black, &black, 0, 0); | 87 | invisible = XCreatePixmapCursor(dpy, pmap, pmap, &black, &black, 0, 0); |
88 | XDefineCursor(dpy, w, invisible); | 88 | XDefineCursor(dpy, w, invisible); |
89 | for(len = 1000; len && (XGrabPointer(dpy, RootWindow(dpy, screen), False, | 89 | for(len = 1000; len; len--) { |
90 | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, | 90 | if(XGrabPointer(dpy, root, False, ButtonPressMask | ButtonReleaseMask | PointerMotionMask, |
91 | GrabModeAsync, GrabModeSync, None, invisible, CurrentTime) != GrabSuccess); len--) | 91 | GrabModeAsync, GrabModeSync, None, invisible, CurrentTime) == GrabSuccess) |
92 | break; | ||
92 | usleep(1000); | 93 | usleep(1000); |
93 | running = running && (len > 0); | 94 | } |
94 | for(len = 1000; len && (XGrabKeyboard(dpy, RootWindow(dpy, screen), True, GrabModeAsync, | 95 | if((running = running && (len > 0))) { |
95 | GrabModeAsync, CurrentTime) != GrabSuccess); len--) | 96 | for(len = 1000; len; len--) { |
96 | usleep(1000); | 97 | if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) |
97 | running = running && (len > 0); | 98 | == GrabSuccess) |
99 | break; | ||
100 | usleep(1000); | ||
101 | } | ||
102 | running = (len > 0); | ||
103 | } | ||
98 | len = 0; | 104 | len = 0; |
99 | XMapRaised(dpy, w); | 105 | XMapRaised(dpy, w); |
100 | XSync(dpy, False); | 106 | XSync(dpy, False); |