X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ftimer.c;h=33f4bab73e74d934e8259f9a3182515b40e9ddb4;hb=dcdc325f5c8c946df696d17a6da329aeac149586;hp=e459154465ce2e615b01e3d4cd424734b91b1952;hpb=a8a4a2cca30602b66b7a7f68bb9f3fffd34e92c9;p=chaz%2Fopenbox diff --git a/openbox/timer.c b/openbox/timer.c index e4591544..33f4bab7 100644 --- a/openbox/timer.c +++ b/openbox/timer.c @@ -8,7 +8,7 @@ static GTimeVal now; static GTimeVal ret_wait; static GSList *timers; /* nearest timer is at the top */ -#define NEAREST_TIMEOUT (((Timer*)timers->data)->timeout) +#define NEAREST_TIMEOUT (((ObTimer*)timers->data)->timeout) static long timecompare(GTimeVal *a, GTimeVal *b) { @@ -19,11 +19,11 @@ static long timecompare(GTimeVal *a, GTimeVal *b) } -static void insert_timer(Timer *self) +static void insert_timer(ObTimer *self) { GSList *it; for (it = timers; it != NULL; it = it->next) { - Timer *t = it->data; + ObTimer *t = it->data; if (timecompare(&self->timeout, &t->timeout) <= 0) { timers = g_slist_insert_before(timers, it, self); break; @@ -49,13 +49,14 @@ void timer_shutdown() timers = NULL; } -Timer *timer_start(long delay, TimeoutHandler cb, void *data) +ObTimer *timer_start(long delay, ObTimeoutHandler cb, void *data) { - Timer *self = g_new(Timer, 1); + ObTimer *self = g_new(ObTimer, 1); self->delay = delay; self->action = cb; self->data = data; self->del_me = FALSE; + g_get_current_time(&now); self->last = self->timeout = now; g_time_val_add(&self->timeout, delay); @@ -64,7 +65,7 @@ Timer *timer_start(long delay, TimeoutHandler cb, void *data) return self; } -void timer_stop(Timer *self) +void timer_stop(ObTimer *self) { self->del_me = TRUE; } @@ -96,7 +97,7 @@ void timer_dispatch(GTimeVal **wait) g_get_current_time(&now); while (timers != NULL) { - Timer *curr = timers->data; /* get the top element */ + ObTimer *curr = timers->data; /* get the top element */ /* since timer_stop doesn't actually free the timer, we have to do our real freeing in here. */ @@ -117,7 +118,7 @@ void timer_dispatch(GTimeVal **wait) */ timers = g_slist_delete_link(timers, timers); g_time_val_add(&curr->last, curr->delay); - curr->action(curr->data); + curr->action(curr, curr->data); g_time_val_add(&curr->timeout, curr->delay); insert_timer(curr);