[empathy: 2/3] disconnect from invalidated signal before unreferencing connections



commit 240b54dbfe75e1d24a7619cf22e2ffd3acbb6427
Author: Elliot Fairweather <elliot fairweather collabora co uk>
Date:   Fri Jun 26 14:49:30 2009 +0100

    disconnect from invalidated signal before unreferencing connections

 libempathy/empathy-account-manager.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/libempathy/empathy-account-manager.c b/libempathy/empathy-account-manager.c
index dd0a72f..ff9fd25 100644
--- a/libempathy/empathy-account-manager.c
+++ b/libempathy/empathy-account-manager.c
@@ -505,12 +505,26 @@ empathy_account_manager_init (EmpathyAccountManager *manager)
 }
 
 static void
+account_manager_disconnect_foreach (gpointer key,
+                                    gpointer value,
+                                    gpointer user_data)
+{
+  TpConnection *connection = key;
+  EmpathyAccountManager *manager = user_data;
+
+  g_signal_handlers_disconnect_by_func (connection, connection_invalidated_cb,
+    manager);
+}
+
+static void
 do_finalize (GObject *obj)
 {
   EmpathyAccountManager *manager = EMPATHY_ACCOUNT_MANAGER (obj);
   EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
 
   g_hash_table_unref (priv->accounts);
+  g_hash_table_foreach (priv->connections, account_manager_disconnect_foreach,
+    obj);
   g_hash_table_unref (priv->connections);
 
   G_OBJECT_CLASS (empathy_account_manager_parent_class)->finalize (obj);



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