summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2012-09-05 00:26:17 +0200
committerDebarshi Ray <debarshir@freedesktop.org>2013-01-09 15:33:23 +0100
commit08cb95912dc554c45f3882eca592dca7012425b6 (patch)
tree86fd3c557b71fc604324ba747717d92f55a4d772
parent65483732df890a2c702feb55ba594c59118f8658 (diff)
downloadtelepathy-logger-08cb95912dc554c45f3882eca592dca7012425b6.tar.gz
log-walker: Use complete_in_idle() instead of idle_add()
Fixes: https://bugs.freedesktop.org/54270
-rw-r--r--telepathy-logger/log-walker.c28
1 files changed, 6 insertions, 22 deletions
diff --git a/telepathy-logger/log-walker.c b/telepathy-logger/log-walker.c
index 496027b..23fc95e 100644
--- a/telepathy-logger/log-walker.c
+++ b/telepathy-logger/log-walker.c
@@ -484,22 +484,12 @@ tpl_log_walker_get_events (GObject *source_object,
g_mutex_unlock (&priv->mutex);
g_simple_async_result_set_op_res_gpointer (simple, events, NULL);
- g_simple_async_result_complete (simple);
- g_object_unref (simple);
-}
-
-
-static gboolean
-tpl_log_walker_get_events_async_idle (gpointer user_data)
-{
- GSimpleAsyncResult *simple;
- GObject *source_object;
-
- simple = G_SIMPLE_ASYNC_RESULT (user_data);
- source_object = g_async_result_get_source_object (G_ASYNC_RESULT (simple));
- tpl_log_walker_get_events (source_object, NULL, simple);
+ if (result != NULL)
+ g_simple_async_result_complete (simple);
+ else
+ g_simple_async_result_complete_in_idle (simple);
- return G_SOURCE_REMOVE;
+ g_object_unref (simple);
}
@@ -775,13 +765,7 @@ tpl_log_walker_get_events_async (TplLogWalker *walker,
tpl_log_walker_get_events_async);
g_mutex_lock (&walker->priv->mutex);
-
- /* We should return to the main loop before doing anything because
- * otherwise in certain cases (eg., num_events == 0), we might
- * complete the whole operation without ever returning to the main
- * loop.
- */
- g_idle_add (tpl_log_walker_get_events_async_idle, simple);
+ tpl_log_walker_get_events (G_OBJECT (walker), NULL, simple);
}