applied andres' multi-slock fix, thanks for spotting this issue
This commit is contained in:
parent
4b4fcca1bc
commit
d276b9b0e0
1 changed files with 14 additions and 3 deletions
17
slock.c
17
slock.c
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
/* See LICENSE file for license details. */
|
/* See LICENSE file for license details. */
|
||||||
#define _XOPEN_SOURCE 500
|
#define _XOPEN_SOURCE 500
|
||||||
#if HAVE_SHADOW_H
|
#if HAVE_SHADOW_H
|
||||||
|
@ -211,9 +212,9 @@ lockscreen(Display *dpy, int screen) {
|
||||||
break;
|
break;
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
}
|
}
|
||||||
running = (len > 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
running &= (len > 0);
|
||||||
if(!running) {
|
if(!running) {
|
||||||
unlockscreen(dpy, lock);
|
unlockscreen(dpy, lock);
|
||||||
lock = NULL;
|
lock = NULL;
|
||||||
|
@ -257,10 +258,20 @@ main(int argc, char **argv) {
|
||||||
locks = malloc(sizeof(Lock *) * nscreens);
|
locks = malloc(sizeof(Lock *) * nscreens);
|
||||||
if(locks == NULL)
|
if(locks == NULL)
|
||||||
die("slock: malloc: %s", strerror(errno));
|
die("slock: malloc: %s", strerror(errno));
|
||||||
for(screen = 0; screen < nscreens; screen++)
|
int nlocks = 0;
|
||||||
locks[screen] = lockscreen(dpy, screen);
|
for(screen = 0; screen < nscreens; screen++) {
|
||||||
|
if ( (locks[screen] = lockscreen(dpy, screen)) != NULL)
|
||||||
|
nlocks++;
|
||||||
|
}
|
||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
|
|
||||||
|
/* Did we actually manage to lock something? */
|
||||||
|
if (nlocks == 0) { // nothing to protect
|
||||||
|
free(locks);
|
||||||
|
XCloseDisplay(dpy);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Everything is now blank. Now wait for the correct password. */
|
/* Everything is now blank. Now wait for the correct password. */
|
||||||
#ifdef HAVE_BSD_AUTH
|
#ifdef HAVE_BSD_AUTH
|
||||||
readpw(dpy);
|
readpw(dpy);
|
||||||
|
|
Loading…
Reference in a new issue