aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-03-26 00:28:01 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-03-26 00:28:01 +0800
commit95217d7459ab0962e1733c58665d36f1a0f6029e (patch)
treeef507fdc1c33cf6806bfae5b84d1f149afb96093
parent643230463035dd52200e8b1ab57d03dfe657b590 (diff)
downloadgsoc2013-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
-rw-r--r--libempathy/empathy-tp-call.c18
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);