diff options
-rw-r--r-- | slock.c | 17 |
1 files changed, 7 insertions, 10 deletions
@@ -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++) { |