X-Git-Url: https://git.stderr.nl/gitweb?p=projects%2Fchimara%2Fchimara.git;a=blobdiff_plain;f=libchimara%2Ftimer.c;h=cebe6fe31c646820fdc02a2bc65dba6e0b0a3e2c;hp=f063defdbe60834dd1cf3c7a6fc55980560e5c6b;hb=1e0dc5378f314f555e3b923c6d95f5017abd528b;hpb=bae31a7df18ecafe05ec1a11b0961708bc3badd6 diff --git a/libchimara/timer.c b/libchimara/timer.c index f063def..cebe6fe 100644 --- a/libchimara/timer.c +++ b/libchimara/timer.c @@ -1,6 +1,6 @@ #include "timer.h" -extern ChimaraGlkPrivate *glk_data; +extern GPrivate glk_data_key; /** * glk_request_timer_events: @@ -35,7 +35,7 @@ extern ChimaraGlkPrivate *glk_data; * This prevents the user from being locked out by overly enthusiastic timer * events. Unfortunately, it also means that your timer can be locked out on * slower machines, if the player pounds too enthusiastically on the keyboard. - * Sorry. If you want a real-time operating system, talk to Wind River. + * Sorry. * * * @@ -46,6 +46,8 @@ extern ChimaraGlkPrivate *glk_data; void glk_request_timer_events(glui32 millisecs) { + ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key); + // Stop any existing timer if(glk_data->timer_id != 0) { g_source_remove(glk_data->timer_id); @@ -55,7 +57,7 @@ glk_request_timer_events(glui32 millisecs) if(millisecs == 0) return; - glk_data->timer_id = g_timeout_add(millisecs, push_timer_event, NULL); + glk_data->timer_id = g_timeout_add(millisecs, (GSourceFunc)push_timer_event, glk_data->self); } /* @@ -63,9 +65,9 @@ glk_request_timer_events(glui32 millisecs) * Will always return TRUE */ gboolean -push_timer_event(gpointer data) +push_timer_event(ChimaraGlk *glk) { - event_throw(evtype_Timer, NULL, 0, 0); + event_throw(glk, evtype_Timer, NULL, 0, 0); return TRUE; }