diff options
author | Henrik Rydberg <rydberg@bitmath.org> | 2010-09-04 17:56:17 +0200 |
---|---|---|
committer | Henrik Rydberg <rydberg@bitmath.org> | 2010-09-04 17:56:17 +0200 |
commit | 86d55b7bec2ebbd38d982d54011536f8f0161a35 (patch) | |
tree | 10008d7f87709de78d95cfbb8599467d9469e65a | |
parent | a1b90cb27d11c974523f39c8a11a9839851a3eed (diff) |
Fix problem with X event buffers
It seems flushing is not enough to keep X stable, so check
for pending events and extract them when idle.
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
-rw-r--r-- | src/mtview.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/mtview.c b/src/mtview.c index afa6e2a..8891987 100644 --- a/src/mtview.c +++ b/src/mtview.c @@ -5,8 +5,8 @@ #include <string.h> #include <math.h> -#define XMARG 64 -#define YMARG 64 +#define XMARG 16 +#define YMARG 16 #define WSCALE 0.5 #define FLUSH_MS 10 #define DEF_FRAC 0.15 @@ -29,7 +29,7 @@ static inline float max(float a, float b) static unsigned long new_color(struct windata *w) { - return lrand48(); + return lrand48() & 0xffffff; } static void clear_screen(struct windata *w) @@ -115,12 +115,10 @@ static void event_loop(struct touch_dev *dev, int fd, struct windata *w) clear_screen(w); while (1) { - XFlush(w->dsp); - while(!touch_dev_idle(dev, fd, 100)) + if(!touch_dev_idle(dev, fd, 100)) touch_dev_pull(dev, fd); - if (XEventsQueued(w->dsp, QueuedAlready)) { + while (XPending(w->dsp)) { XNextEvent(w->dsp, &ev); - break; } } } |