telepathy-logger: log-walker: Use complete_in_idle() instead of idle_add()

Debarshi Ray debarshir at kemper.freedesktop.org
Tue Jan 15 08:18:31 PST 2013


Module: telepathy-logger
Branch: master
Commit: 08cb95912dc554c45f3882eca592dca7012425b6
URL:    http://cgit.freedesktop.org/telepathy/telepathy-logger/commit/?id=08cb95912dc554c45f3882eca592dca7012425b6

Author: Nicolas Dufresne <nicolas.dufresne at collabora.com>
Date:   Wed Sep  5 00:26:17 2012 +0200

log-walker: Use complete_in_idle() instead of idle_add()

Fixes: https://bugs.freedesktop.org/54270

---

 telepathy-logger/log-walker.c |   28 ++++++----------------------
 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);
 }
 
 



More information about the telepathy-commits mailing list