From fd519ffc40bdd13d8b418b6f95cf28ae6a167d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= Date: Fri, 17 Aug 2012 16:54:29 +0200 Subject: Disregard obsolete events, fixed issue #64 --- Makefile | 2 +- main.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 9a8a3ed..23826fb 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = git-20120816 +VERSION = git-20120817 PREFIX = /usr/local MANPREFIX = $(PREFIX)/share/man 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