From 8556b8dae158c631725184a9243c3493af15c8b6 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 18 Sep 2013 01:54:22 +0200 Subject: 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. --- sys/src/libdraw/event.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3