shithub: riscv

Download patch

ref: a08727d9da8334c3c96de41dafc5820aac9013da
parent: 308407dc6e46640c3e36049aad7ad6a84ddfdc2a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Dec 3 11:34:35 EST 2017

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.

--- a/sys/src/cmd/screenlock.c
+++ b/sys/src/cmd/screenlock.c
@@ -91,8 +91,8 @@
 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 @@
 		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);
+		}
 	}
 }