[empathy: 1/3] disconnnect from invalidated signal before unreferencing connections



commit ae811044a107035a82cbba64951661494dd33e3a
Author: Elliot Fairweather <elliot fairweather collabora co uk>
Date:   Fri Jun 26 14:45:22 2009 +0100

    disconnnect from invalidated signal before unreferencing connections

 libempathy/empathy-contact-manager.c |   44 ++++++++++++++++++---------------
 1 files changed, 24 insertions(+), 20 deletions(-)
---
diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c
index f415ec1..412087e 100644
--- a/libempathy/empathy-contact-manager.c
+++ b/libempathy/empathy-contact-manager.c
@@ -87,26 +87,6 @@ contact_manager_groups_changed_cb (EmpathyTpContactList  *list,
 }
 
 static void
-contact_manager_disconnect_foreach (gpointer key,
-				    gpointer value,
-				    gpointer user_data)
-{
-	EmpathyTpContactList  *list = value;
-	EmpathyContactManager *manager = user_data;
-
-	/* Disconnect signals from the list */
-	g_signal_handlers_disconnect_by_func (list,
-					      contact_manager_members_changed_cb,
-					      manager);
-	g_signal_handlers_disconnect_by_func (list,
-					      contact_manager_pendings_changed_cb,
-					      manager);
-	g_signal_handlers_disconnect_by_func (list,
-					      contact_manager_groups_changed_cb,
-					      manager);
-}
-
-static void
 contact_manager_invalidated_cb (TpProxy *connection,
 				guint    domain,
 				gint     code,
@@ -128,6 +108,30 @@ contact_manager_invalidated_cb (TpProxy *connection,
 }
 
 static void
+contact_manager_disconnect_foreach (gpointer key,
+				    gpointer value,
+				    gpointer user_data)
+{
+	TpConnection *connection = key;
+	EmpathyTpContactList  *list = value;
+	EmpathyContactManager *manager = user_data;
+
+	/* Disconnect signals from the list */
+	g_signal_handlers_disconnect_by_func (list,
+					      contact_manager_members_changed_cb,
+					      manager);
+	g_signal_handlers_disconnect_by_func (list,
+					      contact_manager_pendings_changed_cb,
+					      manager);
+	g_signal_handlers_disconnect_by_func (list,
+					      contact_manager_groups_changed_cb,
+					      manager);
+	g_signal_handlers_disconnect_by_func (connection,
+					      contact_manager_invalidated_cb,
+					      manager);
+}
+
+static void
 contact_manager_new_connection_cb (EmpathyAccountManager *account_manager,
 				   TpConnection *connection,
 				   EmpathyContactManager *self)



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