diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-26 00:28:01 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-26 00:28:01 +0800 |
commit | 95217d7459ab0962e1733c58665d36f1a0f6029e (patch) | |
tree | ef507fdc1c33cf6806bfae5b84d1f149afb96093 /libempathy/empathy-tp-call.c | |
parent | 643230463035dd52200e8b1ab57d03dfe657b590 (diff) | |
download | gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar.gz gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar.bz2 gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar.lz gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar.xz gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.tar.zst gsoc2013-empathy-95217d7459ab0962e1733c58665d36f1a0f6029e.zip |
Disconnect invalidated signal when TpCall is finalized. Fixes bug #523766.
svn path=/trunk/; revision=826
Diffstat (limited to 'libempathy/empathy-tp-call.c')
-rw-r--r-- | libempathy/empathy-tp-call.c | 18 |
1 files 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); |