shithub: riscv

Download patch

ref: 762093d2125c0f6efffd55697e6b580dd607ccf3
parent: 883ded7b49fc9775d5bca5cb03dcec6d006dc92d
author: cinap_lenrek <[email protected]>
date: Sun Aug 11 20:08:51 EDT 2013

games/juggle, games/catclock: keep up with queued mouse events

many queued mouse events delay eresize() because
new ebread() takes from the queue first before attempting
to read from the event pipe. this is a waste of memory, so
just process (dequeue) all the events as long as there are
any on each iteration.

--- a/sys/src/games/catclock.c
+++ b/sys/src/games/catclock.c
@@ -118,7 +118,7 @@
 		eye[i]=draweye(i*PI/NTAIL);
 	}
 	for(;;){
-		if(ecanmouse()) emouse();	/* don't get resize events without this! */
+		while(ecanmouse()) emouse();	/* don't get resize events without this! */
 		drawclock();
 		flushimage(display, 1);
 //		bflush();
--- a/sys/src/games/juggle.c
+++ b/sys/src/games/juggle.c
@@ -76,7 +76,7 @@
 void move(int t){
 	int i, j;
 	for(i=0;i!=NSTEP;i++){
-		if(ecanmouse()) emouse();
+		while(ecanmouse()) emouse();
 		draw(image, inset(image->r, 3), display->white, nil, ZP);
 		for(j=0;j!=nball;j++)
 			fillellipse(image, bpos(j, i, t), RBALL, RBALL, disk[j%ndisk], ZP);