original patch by Michael Stummvoll <mich...@stummi.org>
---
 config.def.h |  1 +
 slock.c      | 10 +++++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/config.def.h b/config.def.h
index 89e5977..7f55466 100644
--- a/config.def.h
+++ b/config.def.h
@@ -1,2 +1,3 @@
 #define COLOR1 "black"
 #define COLOR2 "#005577"
+#define COLOR3 "#550000"
diff --git a/slock.c b/slock.c
index face75e..8519ce2 100644
--- a/slock.c
+++ b/slock.c
@@ -29,12 +29,13 @@ typedef struct {
        int screen;
        Window root, win;
        Pixmap pmap;
-       unsigned long colors[2];
+       unsigned long colors[3];
 } Lock;
 
 static Lock **locks;
 static int nscreens;
 static Bool running = True;
+static Bool tried = False;
 
 static void
 die(const char *errstr, ...) {
@@ -135,6 +136,7 @@ readpw(Display *dpy, const char *pws)
 #ifdef HAVE_BSD_AUTH
                                running = !auth_userokay(getlogin(), NULL, 
"auth-xlock", passwd);
 #else
+                               tried=True;
                                running = !!strcmp(crypt(passwd, pws), pws);
 #endif
                                if(running)
@@ -162,7 +164,7 @@ readpw(Display *dpy, const char *pws)
                                }
                        } else if(llen != 0 && len == 0) {
                                for(screen = 0; screen < nscreens; screen++) {
-                                       XSetWindowBackground(dpy, 
locks[screen]->win, locks[screen]->colors[0]);
+                                       XSetWindowBackground(dpy, 
locks[screen]->win, locks[screen]->colors[tried ? 2 : 0]);
                                        XClearWindow(dpy, locks[screen]->win);
                                }
                        }
@@ -179,7 +181,7 @@ unlockscreen(Display *dpy, Lock *lock) {
                return;
 
        XUngrabPointer(dpy, CurrentTime);
-       XFreeColors(dpy, DefaultColormap(dpy, lock->screen), lock->colors, 2, 
0);
+       XFreeColors(dpy, DefaultColormap(dpy, lock->screen), lock->colors, 3, 
0);
        XFreePixmap(dpy, lock->pmap);
        XDestroyWindow(dpy, lock->win);
 
@@ -212,6 +214,8 @@ lockscreen(Display *dpy, int screen) {
        lock->win = XCreateWindow(dpy, lock->root, 0, 0, DisplayWidth(dpy, 
lock->screen), DisplayHeight(dpy, lock->screen),
                        0, DefaultDepth(dpy, lock->screen), CopyFromParent,
                        DefaultVisual(dpy, lock->screen), CWOverrideRedirect | 
CWBackPixel, &wa);
+       XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR3, 
&color, &dummy);
+       lock->colors[2] = color.pixel;
        XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR2, 
&color, &dummy);
        lock->colors[1] = color.pixel;
        XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR1, 
&color, &dummy);
-- 
2.2.1


Reply via email to