all repos — openbox @ 48d0d4268589454a7c40917ea694a62dbbd56d90

openbox fork - make it a bit more like ryudo

allow more than one timer to process at a time
Dana Jansens danakj@orodu.net
commit

48d0d4268589454a7c40917ea694a62dbbd56d90

parent

a9ae2f481ab444010dc34e1fde24839ff37d4fd3

1 files changed, 7 insertions(+), 4 deletions(-)

jump to
M openbox/mainloop.copenbox/mainloop.c

@@ -566,6 +566,8 @@ }

static void timer_dispatch(ObMainLoop *loop, GTimeVal **wait) { + gboolean fired = FALSE; + g_get_current_time(&loop->now); while (loop->timers != NULL) {

@@ -600,15 +602,16 @@ curr->destroy(curr->data);

g_free(curr); } + fired = TRUE; + } + + if (fired) { /* if at least one timer fires, then don't wait on X events, as there may already be some in the queue from the timer callbacks. */ loop->ret_wait.tv_sec = loop->ret_wait.tv_usec = 0; *wait = &loop->ret_wait; - return; - } - - if (nearest_timeout_wait(loop, &loop->ret_wait)) + } else if (nearest_timeout_wait(loop, &loop->ret_wait)) *wait = &loop->ret_wait; else *wait = NULL;