From 55b84316bb699fa530efe78d75ae8e1d57c1b57f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 28 Apr 2010 12:57:51 -0400 Subject: make an event queue for X events. the queue's min size is 16 XEvents (~3k) --- obt/mainloop.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'obt/mainloop.c') diff --git a/obt/mainloop.c b/obt/mainloop.c index ecdd7f7f..75366256 100644 --- a/obt/mainloop.c +++ b/obt/mainloop.c @@ -19,6 +19,7 @@ #include "obt/mainloop.h" #include "obt/display.h" +#include "obt/xqueue.h" #include "obt/util.h" #ifdef HAVE_STDIO_H @@ -296,10 +297,8 @@ void obt_main_loop_run(ObtMainLoop *loop) loop->signal_fired = FALSE; sigprocmask(SIG_SETMASK, &oldset, NULL); - } else if (loop->display && XPending(loop->display)) { - do { - XNextEvent(loop->display, &e); - + } else if (loop->display && xqueue_pending_local()) { + while (xqueue_next_local(&e) && loop->run) { if (e.type == MappingNotify) XRefreshKeyboardMapping(&e.xmapping); @@ -307,10 +306,9 @@ void obt_main_loop_run(ObtMainLoop *loop) ObtMainLoopXHandlerType *h = it->data; h->func(&e, h->data); } - } while (XPending(loop->display) && loop->run); + } } else { /* this only runs if there were no x events received */ - timer_dispatch(loop, (GTimeVal**)&wait); selset = loop->fd_set; -- cgit v1.2.3