From 95217d7459ab0962e1733c58665d36f1a0f6029e Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 25 Mar 2008 16:28:01 +0000 Subject: Disconnect invalidated signal when TpCall is finalized. Fixes bug #523766. svn path=/trunk/; revision=826 --- libempathy/empathy-tp-call.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c index 507ade022..242422853 100644 --- a/libempathy/empathy-tp-call.c +++ b/libempathy/empathy-tp-call.c @@ -232,9 +232,13 @@ tp_call_invalidated_cb (TpProxy *stream_engine, gchar *message, EmpathyTpCall *call) { + EmpathyTpCallPriv *priv = GET_PRIV (call); + empathy_debug (DEBUG_DOMAIN, "Stream engine proxy invalidated: %s", message); empathy_tp_call_close_channel (call); + g_object_unref (priv->stream_engine); + priv->stream_engine = NULL; } static void @@ -263,14 +267,6 @@ tp_call_channel_closed_cb (TpChan *channel, G_CALLBACK (tp_call_stream_added_cb), call); dbus_g_proxy_disconnect_signal (streamed_iface, "StreamRemoved", G_CALLBACK (tp_call_stream_removed_cb), call); - - if (priv->stream_engine) - { - g_signal_handlers_disconnect_by_func (priv->stream_engine, - tp_call_invalidated_cb, call); - g_object_unref (priv->stream_engine); - priv->stream_engine = NULL; - } } static void @@ -651,7 +647,11 @@ tp_call_finalize (GObject *object) g_object_unref (priv->channel); if (priv->stream_engine != NULL) - g_object_unref (priv->stream_engine); + { + g_signal_handlers_disconnect_by_func (priv->stream_engine, + tp_call_invalidated_cb, object); + g_object_unref (priv->stream_engine); + } if (priv->contact != NULL) g_object_unref (priv->contact); -- cgit v1.2.3