git: 9front

Download patch

ref: b69c06ad7e1502a17260c641f121b9901ea21f71
parent: 1f902a8e75e2edc71f153bcb0060ea5e1136b553
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);
+		}
 	}
 }
 
--