[glib/wip/source-api: 5/5] GTimeoutSource: simplify
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/source-api: 5/5] GTimeoutSource: simplify
- Date: Tue, 30 Aug 2011 23:15:59 +0000 (UTC)
commit a3d7ab5f307875c28248de3696bd4c306e15af94
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.
glib/gmain.c | 50 +++++++++++---------------------------------------
1 files changed, 11 insertions(+), 39 deletions(-)
---
diff --git a/glib/gmain.c b/glib/gmain.c
index 1fd9a91..327bba9 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -271,7 +271,6 @@ struct _GMainLoop
struct _GTimeoutSource
{
GSource source;
- gint64 expiration;
guint interval;
gboolean seconds;
};
@@ -360,9 +359,6 @@ static void g_main_context_wakeup_unlocked (GMainContext *context);
static void _g_main_wake_up_all_contexts (void);
-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);
@@ -438,8 +434,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
};
@@ -3854,8 +3850,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)
{
@@ -3884,42 +3881,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]