[glib/wip/new-gsource: 7/8] GTimeoutSource: simplify
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/new-gsource: 7/8] GTimeoutSource: simplify
- Date: Tue, 30 Oct 2012 12:02:48 +0000 (UTC)
commit 2d8e4fbcb556d6effd7975e7d95c97b434bf9cf3
Author: Ryan Lortie <desrt desrt ca>
Date: Tue Aug 30 19:14:17 2011 -0400
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 files changed, 11 insertions(+), 39 deletions(-)
---
diff --git a/glib/gmain.c b/glib/gmain.c
index ed3de3d..b498432 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -279,7 +279,6 @@ struct _GMainLoop
struct _GTimeoutSource
{
GSource source;
- gint64 expiration;
guint interval;
gboolean seconds;
};
@@ -378,9 +377,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);
@@ -447,8 +443,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
};
@@ -4278,8 +4274,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)
{
@@ -4308,42 +4305,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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]