]> git.0d.be Git - empathy.git/commitdiff
accounts_dialog_add_account: connect notify::display-name using empathy_signal_connec...
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 14 Oct 2009 14:34:01 +0000 (15:34 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 14 Oct 2009 16:01:28 +0000 (17:01 +0100)
empathy_signal_connect_weak will disconnect the signal when the accounts
dialog is disposed. (#598408)

src/empathy-accounts-dialog.c

index 4e120e1d4f3f035aef29881e6b8aaf7f8a90a70e..1aacaff683616ec74000f19cd6c6788dcf91f228 100644 (file)
@@ -136,11 +136,6 @@ enum {
   PROP_PARENT = 1
 };
 
-static void accounts_dialog_account_display_name_changed_cb (
-    EmpathyAccount *account,
-    GParamSpec *pspec,
-    gpointer user_data);
-
 static EmpathyAccountSettings * accounts_dialog_model_get_selected_settings (
     EmpathyAccountsDialog *dialog);
 
@@ -762,8 +757,6 @@ accounts_dialog_delete_account_response_cb (GtkDialog *message_dialog,
 
       if (account != NULL)
         {
-          g_signal_handlers_disconnect_by_func (account,
-              accounts_dialog_account_display_name_changed_cb, account_dialog);
           empathy_account_remove_async (account, NULL, NULL);
           g_object_unref (account);
           account = NULL;
@@ -1281,8 +1274,9 @@ accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
       TP_CONNECTION_STATUS_DISCONNECTED,
       dialog);
 
-  g_signal_connect (account, "notify::display-name",
-      G_CALLBACK (accounts_dialog_account_display_name_changed_cb), dialog);
+  empathy_signal_connect_weak (account, "notify::display-name",
+      G_CALLBACK (accounts_dialog_account_display_name_changed_cb),
+      G_OBJECT (dialog));
 
   g_object_unref (settings);
 }
@@ -1337,8 +1331,6 @@ accounts_dialog_account_removed_cb (EmpathyAccountManager *manager,
 
   if (accounts_dialog_get_account_iter (dialog, account, &iter))
     {
-      g_signal_handlers_disconnect_by_func (account,
-          accounts_dialog_account_display_name_changed_cb, dialog);
       gtk_list_store_remove (GTK_LIST_STORE (
             gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview))), &iter);
     }