ref: 187806ad2021994c4e841d4dbddc569d51023bb0
parent: acc504c319a4b4188479cfa602e40cb6851c0528
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Jul 18 15:54:58 EDT 2021
screenlock: don't poll to top window (thanks Stuart Morrow) > String becomes stringbg so we have guaranteed max contrast in case the > user changes the picture. (If you don't change the picture, it's > white-on-black-on-black (sic) and you would never notice the change.)
--- a/sys/src/cmd/screenlock.c
+++ b/sys/src/cmd/screenlock.c
@@ -119,14 +119,19 @@
void
top(void*)
{
- int fd;
+ int fd, n;
+ char buf[128];
- if((fd = open("/dev/wctl", OWRITE)) < 0)
+ if((fd = open("/dev/wctl", ORDWR)) < 0)
return;
for(;;){
- write(fd, "current", 7);
- sleep(500);
+ n = read(fd, buf, sizeof buf-1);
+ if(n > 48){
+ buf[n] = '\0';
+ if(strstr(buf+48, "notcurrent"))
+ write(fd, "current", 7);
+ }
}
}
@@ -186,7 +191,7 @@
tm = localtime(time(&blank));
s = smprint("user %s at %d:%02.2d", getuser(), tm->hour, tm->min);
p = subpt(p, Pt(stringwidth(font, "m") * strlen(s) / 2, 0));
- string(screen, p, screen->display->white, ZP, font, s);
+ stringbg(screen, p, display->white, ZP, font, s, display->black, ZP);
}
flushimage(display, 1);