]> git.0d.be Git - empathy.git/commitdiff
Disconnect all signals in finalize. Fixes bug #462815.
authorXavier Claessens <xclaesse@gmail.com>
Mon, 1 Oct 2007 11:59:31 +0000 (11:59 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Mon, 1 Oct 2007 11:59:31 +0000 (11:59 +0000)
2007-10-01  Xavier Claessens  <xclaesse@gmail.com>

* libempathy/empathy-tp-chat.c: Disconnect all signals in finalize.
Fixes bug #462815.

svn path=/trunk/; revision=347

ChangeLog
libempathy/empathy-tp-chat.c

index e9a15a6f8d55c5974c422887cd8b3e8b49e394ea..fc4269adbaa39eb6e3792a5391c28a2c36e246db 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-01  Xavier Claessens  <xclaesse@gmail.com>
+
+       * libempathy/empathy-tp-chat.c: Disconnect all signals in finalize.
+       Fixes bug #462815.
+
 2007-10-01  Xavier Claessens  <xclaesse@gmail.com>
 
        * libempathy-gtk/empathy-chatrooms-window.c: Disconnect signals on
index fc943f0c610b23494ffd97a22f582ae1ab63da2a..feba273bda313f7c8b8710df149c09f3ad39abb3 100644 (file)
@@ -346,10 +346,31 @@ tp_chat_finalize (GObject *object)
        chat = EMPATHY_TP_CHAT (object);
        priv = GET_PRIV (chat);
 
+       if (priv->text_iface) {
+               dbus_g_proxy_disconnect_signal (priv->text_iface, "Received",
+                                               G_CALLBACK (tp_chat_received_cb),
+                                               chat);
+               dbus_g_proxy_disconnect_signal (priv->text_iface, "Sent",
+                                               G_CALLBACK (tp_chat_sent_cb),
+                                               chat);
+               dbus_g_proxy_disconnect_signal (priv->text_iface, "SendError",
+                                               G_CALLBACK (tp_chat_send_error_cb),
+                                               chat);
+       }
+
+       if (priv->chat_state_iface) {
+               dbus_g_proxy_disconnect_signal (priv->chat_state_iface, "ChatStateChanged",
+                                               G_CALLBACK (tp_chat_state_changed_cb),
+                                               chat);
+       }
+
        if (priv->tp_chan) {
                g_signal_handlers_disconnect_by_func (priv->tp_chan,
                                                      tp_chat_destroy_cb,
                                                      object);
+               dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (priv->tp_chan), "Closed",
+                                               G_CALLBACK (tp_chat_closed_cb),
+                                               chat);
                if (priv->acknowledge) {
                        empathy_debug (DEBUG_DOMAIN, "Closing channel...");
                        if (!tp_chan_close (DBUS_G_PROXY (priv->tp_chan), &error)) {