From db7d5306cce36ace71e6f7765a7669fc335747e8 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Tue, 30 Aug 2011 19:14:17 -0400 Subject: [PATCH] GTimeoutSource: simplify Take advantage of the new default handling of the 'prepare' and 'check' functions. https://bugzilla.gnome.org/show_bug.cgi?id=657729 --- glib/gmain.c | 50 +++++++++++--------------------------------------- 1 file changed, 11 insertions(+), 39 deletions(-) diff --git a/glib/gmain.c b/glib/gmain.c index b294459..f1a4592 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -281,7 +281,6 @@ struct _GMainLoop struct _GTimeoutSource { GSource source; - gint64 expiration; guint interval; gboolean seconds; }; @@ -377,9 +376,6 @@ static gboolean g_source_iter_next (GSourceIter *iter, GSource **source); static void g_source_iter_clear (GSourceIter *iter); -static gboolean g_timeout_prepare (GSource *source, - gint *timeout); -static gboolean g_timeout_check (GSource *source); static gboolean g_timeout_dispatch (GSource *source, GSourceFunc callback, gpointer user_data); @@ -446,8 +442,8 @@ static GSList *main_context_list = NULL; GSourceFuncs g_timeout_funcs = { - g_timeout_prepare, - g_timeout_check, + NULL, /* prepare */ + NULL, /* check */ g_timeout_dispatch, NULL }; @@ -4132,8 +4128,9 @@ static void g_timeout_set_expiration (GTimeoutSource *timeout_source, gint64 current_time) { - timeout_source->expiration = current_time + - (guint64) timeout_source->interval * 1000; + gint64 expiration; + + expiration = current_time + (guint64) timeout_source->interval * 1000; if (timeout_source->seconds) { @@ -4162,42 +4159,17 @@ g_timeout_set_expiration (GTimeoutSource *timeout_source, * always only *increase* the expiration time by adding a full * second in the case that the microsecond portion decreases. */ - timeout_source->expiration -= timer_perturb; + expiration -= timer_perturb; - remainder = timeout_source->expiration % 1000000; + remainder = expiration % 1000000; if (remainder >= 1000000/4) - timeout_source->expiration += 1000000; + expiration += 1000000; - timeout_source->expiration -= remainder; - timeout_source->expiration += timer_perturb; + expiration -= remainder; + expiration += timer_perturb; } -} - -static gboolean -g_timeout_prepare (GSource *source, - gint *timeout) -{ - GTimeoutSource *timeout_source = (GTimeoutSource *) source; - gint64 now = g_source_get_time (source); - - if (now < timeout_source->expiration) - { - /* Round up to ensure that we don't try again too early */ - *timeout = (timeout_source->expiration - now + 999) / 1000; - return FALSE; - } - - *timeout = 0; - return TRUE; -} - -static gboolean -g_timeout_check (GSource *source) -{ - GTimeoutSource *timeout_source = (GTimeoutSource *) source; - gint64 now = g_source_get_time (source); - return timeout_source->expiration <= now; + g_source_set_ready_time ((GSource *) timeout_source, expiration); } static gboolean -- 2.7.4