diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-03 16:34:35 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-03 16:34:35 +0100 |
commit | a08727d9da8334c3c96de41dafc5820aac9013da (patch) | |
tree | 2289e796e2716d41d1420d30bd9f9190a38ce3cb /sys/src/cmd/screenlock.c | |
parent | 308407dc6e46640c3e36049aad7ad6a84ddfdc2a (diff) |
screenlock: put position check back in grabmouse (thanks deuteron)
the check was there because changing te position causes another
mouse event to get posted resulting in grabmouse spinning.
Diffstat (limited to 'sys/src/cmd/screenlock.c')
-rw-r--r-- | sys/src/cmd/screenlock.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/src/cmd/screenlock.c b/sys/src/cmd/screenlock.c index b010a0c17..8e3e48de8 100644 --- a/sys/src/cmd/screenlock.c +++ b/sys/src/cmd/screenlock.c @@ -91,8 +91,8 @@ blanker(void *) void grabmouse(void*) { + int fd, x, y; char ibuf[256], obuf[256]; - int fd; if((fd = open("/dev/mouse", ORDWR)) < 0) sysfatal("can't open /dev/mouse: %r"); @@ -102,9 +102,16 @@ grabmouse(void*) screen->r.min.y + Dy(screen->r)/2); while(read(fd, ibuf, sizeof ibuf) > 0){ - if(!debug) - fprint(fd, "%s", obuf); - blank = time(0); + ibuf[12] = 0; + ibuf[24] = 0; + x = atoi(ibuf+1); + y = atoi(ibuf+13); + if(x != screen->r.min.x + Dx(screen->r)/2 || + y != screen->r.min.y + Dy(screen->r)/2){ + if(!debug) + fprint(fd, "%s", obuf); + blank = time(0); + } } } |