summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-09-18 01:54:22 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-09-18 01:54:22 +0200
commit8556b8dae158c631725184a9243c3493af15c8b6 (patch)
tree88729204ee8c86602bcc7b4cf35b2ac9ac3929bf
parent34cd9dc4c462ab01ce063a58a40f1317fcb13172 (diff)
libevent: drop queued mouse events
the changeset r541ead66e8af: "libdraw: make ebread() return buffer immidiately if available" makes mouse sluggish when the program cant keep up as mouse events queue up. this more or less restores the original behaviour but only for mouse events.
-rw-r--r--sys/src/libdraw/event.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/src/libdraw/event.c b/sys/src/libdraw/event.c
index 8b0ad5e64..05052477f 100644
--- a/sys/src/libdraw/event.c
+++ b/sys/src/libdraw/event.c
@@ -385,7 +385,12 @@ emouse(void)
if(Smouse < 0)
drawerror(display, "events: mouse not initialized");
- eb = ebread(&eslave[Smouse]);
+ for(;;){
+ eb = ebread(&eslave[Smouse]);
+ if(!ecanmouse())
+ break;
+ free(eb); /* drop queued mouse events */
+ }
m.xy.x = atoi((char*)eb->buf+1+0*12);
m.xy.y = atoi((char*)eb->buf+1+1*12);
b = atoi((char*)eb->buf+1+2*12);