From fd519ffc40bdd13d8b418b6f95cf28ae6a167d7d Mon Sep 17 00:00:00 2001 From: Bert Münnich Date: Fri, 17 Aug 2012 16:54:29 +0200 Subject: Disregard obsolete events, fixed issue #64 --- main.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 5f8a0ca..f6d09f5 100644 --- a/main.c +++ b/main.c @@ -419,7 +419,8 @@ void run(void) { int xfd; fd_set fds; struct timeval timeout; - XEvent ev; + XEvent ev, nextev; + unsigned int qlen; redraw(); @@ -450,7 +451,13 @@ void run(void) { select(xfd + 1, &fds, 0, 0, &timeout); } - XNextEvent(win.env.dpy, &ev); + do { + XNextEvent(win.env.dpy, &ev); + qlen = XEventsQueued(win.env.dpy, QueuedAlready); + if (qlen > 0) + XPeekEvent(win.env.dpy, &nextev); + } while (qlen > 0 && ev.type == nextev.type); + switch (ev.type) { /* handle events */ case ButtonPress: @@ -476,7 +483,8 @@ void run(void) { } break; case KeyPress: - on_keypress(&ev.xkey); + if (qlen == 0 || ev.xkey.keycode != nextev.xkey.keycode) + on_keypress(&ev.xkey); break; case MotionNotify: if (mode == MODE_IMAGE) { -- cgit v1.2.3-54-g00ecf