slock

simple X display locker utility
git clone git://git.suckless.org/slock
Log | Files | Refs | README | LICENSE

commit 754195f8d75586e23d1cc69cad00710802e0cb5d
parent 10d4e479c5f6d91bf86e15be3a12c6b09c9808be
Author: Markus Teich <markus.teich@stusta.mhn.de>
Date:   Fri,  8 May 2015 17:10:15 +0200

rework setting window color

Diffstat:
slock.c | 17+++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/slock.c b/slock.c @@ -119,11 +119,12 @@ readpw(Display *dpy, const char *pws) { char buf[32], passwd[256]; int num, screen; - unsigned int len, llen; + unsigned int len, color; KeySym ksym; XEvent ev; + static int oldc = INIT; - len = llen = 0; + len = 0; running = True; /* As "slock" stands for "Simple X display locker", the DPMS settings @@ -174,18 +175,14 @@ readpw(Display *dpy, const char *pws) } break; } - if (llen == 0 && len != 0) { + color = len ? INPUT : (failure || failonclear ? FAILED : INIT); + if (oldc != color) { for (screen = 0; screen < nscreens; screen++) { - XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[INPUT]); - XClearWindow(dpy, locks[screen]->win); - } - } else if (llen != 0 && len == 0) { - for (screen = 0; screen < nscreens; screen++) { - XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[failure || failonclear ? FAILED : INIT]); + XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[color]); XClearWindow(dpy, locks[screen]->win); } + oldc = color; } - llen = len; } else if (rr && ev.type == rrevbase + RRScreenChangeNotify) { XRRScreenChangeNotifyEvent *rre = (XRRScreenChangeNotifyEvent*)&ev; for (screen = 0; screen < nscreens; screen++) {