From 6d97f77c2d95abcdf13593e8530c1f9f7ae1cd87 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 22 Oct 2016 00:04:21 +0200 Subject: libdraw: avoid dropping queued button change mouse events in emouse() --- sys/src/libdraw/event.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'sys/src') diff --git a/sys/src/libdraw/event.c b/sys/src/libdraw/event.c index f8dde5692..5bc9386df 100644 --- a/sys/src/libdraw/event.c +++ b/sys/src/libdraw/event.c @@ -380,21 +380,22 @@ emouse(void) { Mouse m; Ebuf *eb; - static but[2]; + static int lastb; int b; if(Smouse < 0) drawerror(display, "events: mouse not initialized"); for(;;){ eb = ebread(&eslave[Smouse]); - if(!ecanmouse()) + b = atoi((char*)eb->buf+1+2*12); + if(b != lastb || !ecanmouse()) break; free(eb); /* drop queued mouse events */ } + lastb = b; + m.buttons = b; 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); - m.buttons = b; m.msec = atoi((char*)eb->buf+1+3*12); if (logfid) fprint(logfid, "b: %d xy: %P\n", m.buttons, m.xy); -- cgit v1.2.3