[empathy] add empathy_individual_manager_unprepare_async()



commit c338d01cc24c9e64789615fffa38d0b266543c65
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Jul 19 10:40:00 2012 +0200

    add empathy_individual_manager_unprepare_async()
    
    https://bugzilla.gnome.org/show_bug.cgi?id=660128

 libempathy/empathy-individual-manager.c |   48 +++++++++++++++++++++++++++++++
 libempathy/empathy-individual-manager.h |   10 ++++++
 2 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/libempathy/empathy-individual-manager.c b/libempathy/empathy-individual-manager.c
index 1132f58..97be8b8 100644
--- a/libempathy/empathy-individual-manager.c
+++ b/libempathy/empathy-individual-manager.c
@@ -440,6 +440,7 @@ individual_manager_dispose (GObject *object)
   EmpathyIndividualManagerPriv *priv = GET_PRIV (object);
 
   g_hash_table_unref (priv->individuals);
+
   tp_clear_object (&priv->aggregator);
 
   G_OBJECT_CLASS (empathy_individual_manager_parent_class)->dispose (object);
@@ -908,3 +909,50 @@ empathy_individual_manager_get_top_individuals (EmpathyIndividualManager *self)
 
   return priv->top_individuals;
 }
+
+static void
+unprepare_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  GError *error = NULL;
+  GSimpleAsyncResult *my_result = user_data;
+
+  folks_individual_aggregator_unprepare_finish (
+      FOLKS_INDIVIDUAL_AGGREGATOR (source), result, &error);
+
+  if (error != NULL)
+    {
+      DEBUG ("Failed to unprepare the aggregator: %s", error->message);
+      g_simple_async_result_take_error (my_result, error);
+    }
+
+  g_simple_async_result_complete (my_result);
+  g_object_unref (my_result);
+}
+
+void
+empathy_individual_manager_unprepare_async (
+    EmpathyIndividualManager *self,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  EmpathyIndividualManagerPriv *priv = GET_PRIV (self);
+  GSimpleAsyncResult *result;
+
+  result = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
+      empathy_individual_manager_unprepare_async);
+
+  folks_individual_aggregator_unprepare (priv->aggregator, unprepare_cb,
+      result);
+}
+
+gboolean
+empathy_individual_manager_unprepare_finish (
+    EmpathyIndividualManager *self,
+    GAsyncResult *result,
+    GError **error)
+{
+  empathy_implement_finish_void (self,
+      empathy_individual_manager_unprepare_async)
+}
diff --git a/libempathy/empathy-individual-manager.h b/libempathy/empathy-individual-manager.h
index d2a5fe9..fc27043 100644
--- a/libempathy/empathy-individual-manager.h
+++ b/libempathy/empathy-individual-manager.h
@@ -89,5 +89,15 @@ gboolean empathy_individual_manager_get_contacts_loaded (
 GList * empathy_individual_manager_get_top_individuals (
     EmpathyIndividualManager *self);
 
+void empathy_individual_manager_unprepare_async (
+    EmpathyIndividualManager *self,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean empathy_individual_manager_unprepare_finish (
+    EmpathyIndividualManager *self,
+    GAsyncResult *result,
+    GError **error);
+
 G_END_DECLS
 #endif /* __EMPATHY_INDIVIDUAL_MANAGER_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]