From: Guillaume Desmottes Date: Thu, 19 Jul 2012 08:40:00 +0000 (+0200) Subject: add empathy_individual_manager_unprepare_async() X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=c338d01cc24c9e64789615fffa38d0b266543c65 add empathy_individual_manager_unprepare_async() https://bugzilla.gnome.org/show_bug.cgi?id=660128 --- diff --git a/libempathy/empathy-individual-manager.c b/libempathy/empathy-individual-manager.c index 1132f581..97be8b8a 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 d2a5fe90..fc270437 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__ */