GTimeoutSource: simplify

Take advantage of the new default handling of the 'prepare' and 'check'
functions.

https://bugzilla.gnome.org/show_bug.cgi?id=657729
This commit is contained in:
Ryan Lortie 2011-08-30 19:14:17 -04:00
parent 768574635d
commit db7d5306cc

View File

@ -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;
}
}
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;
expiration -= remainder;
expiration += timer_perturb;
}
*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