aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-03-23 03:25:33 +0800
committerxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2008-03-23 03:25:33 +0800
commitf726176c4576605360026baaf1216f18761d5ffe (patch)
tree2a548f19fbc9b81a2fed85c756a944a770928eee /libempathy
parent1e8132e209811278e91e2e39e7830b9158f0e484 (diff)
downloadgsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar.gz
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar.bz2
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar.lz
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar.xz
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.tar.zst
gsoc2013-empathy-f726176c4576605360026baaf1216f18761d5ffe.zip
Disconnect invalidated signal from stream-engine when media channel is closed. Fixes bug #523766.
git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@822 4ee84921-47dd-4033-b63a-18d7a039a3e4
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-call.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c
index fa705cead..507ade022 100644
--- a/libempathy/empathy-tp-call.c
+++ b/libempathy/empathy-tp-call.c
@@ -226,6 +226,18 @@ tp_call_stream_removed_cb (DBusGProxy *channel,
}
static void
+tp_call_invalidated_cb (TpProxy *stream_engine,
+ GQuark domain,
+ gint code,
+ gchar *message,
+ EmpathyTpCall *call)
+{
+ empathy_debug (DEBUG_DOMAIN, "Stream engine proxy invalidated: %s",
+ message);
+ empathy_tp_call_close_channel (call);
+}
+
+static void
tp_call_channel_closed_cb (TpChan *channel,
EmpathyTpCall *call)
{
@@ -251,6 +263,14 @@ 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
@@ -499,18 +519,6 @@ tp_call_async_cb (TpProxy *proxy,
}
static void
-tp_call_invalidated_cb (TpProxy *stream_engine,
- GQuark domain,
- gint code,
- gchar *message,
- EmpathyTpCall *call)
-{
- empathy_debug (DEBUG_DOMAIN, "Stream engine proxy invalidated: %s",
- message);
- empathy_tp_call_close_channel (call);
-}
-
-static void
tp_call_watch_name_owner_cb (TpDBusDaemon *daemon,
const gchar *name,
const gchar *new_owner,