insert timers in the correct order

This commit is contained in:
Dana Jansens 2003-09-24 16:56:46 +00:00
parent e5f61d3d99
commit 4cf0d783f7

View file

@ -507,14 +507,14 @@ static void insert_timer(ObMainLoop *loop, ObMainLoopTimer *ins)
{ {
GSList *it; GSList *it;
for (it = loop->timers; it; it = g_slist_next(it)) { for (it = loop->timers; it; it = g_slist_next(it)) {
ObMainLoopTimer *t = it->data; ObMainLoopTimer *t = it->data;
if (timecompare(&ins->timeout, &t->timeout) <= 0) { if (timecompare(&ins->timeout, &t->timeout) >= 0) {
loop->timers = g_slist_insert_before(loop->timers, it, ins); loop->timers = g_slist_insert_before(loop->timers, it, ins);
break; break;
} }
} }
if (it == NULL) /* didnt fit anywhere in the list */ if (it == NULL) /* didnt fit anywhere in the list */
loop->timers = g_slist_append(loop->timers, ins); loop->timers = g_slist_append(loop->timers, ins);
} }
void ob_main_loop_timeout_add(ObMainLoop *loop, void ob_main_loop_timeout_add(ObMainLoop *loop,
@ -609,7 +609,7 @@ static void timer_dispatch(ObMainLoop *loop, GTimeVal **wait)
/* the queue is sorted, so if this timer shouldn't fire, none are /* the queue is sorted, so if this timer shouldn't fire, none are
ready */ ready */
if (timecompare(&NEAREST_TIMEOUT(loop), &loop->now) <= 0) if (timecompare(&NEAREST_TIMEOUT(loop), &loop->now) < 0)
break; break;
/* we set the last fired time to delay msec after the previous firing, /* we set the last fired time to delay msec after the previous firing,