diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-09-18 01:54:22 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-09-18 01:54:22 +0200 |
commit | 8556b8dae158c631725184a9243c3493af15c8b6 (patch) | |
tree | 88729204ee8c86602bcc7b4cf35b2ac9ac3929bf /sys/src/libdraw/event.c | |
parent | 34cd9dc4c462ab01ce063a58a40f1317fcb13172 (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.
Diffstat (limited to 'sys/src/libdraw/event.c')
-rw-r--r-- | sys/src/libdraw/event.c | 7 |
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); |