diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-23 03:25:33 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-23 03:25:33 +0800 |
commit | 442ba1971b777a8d76589e2fb13cdb8af5a6e74a (patch) | |
tree | 2a548f19fbc9b81a2fed85c756a944a770928eee /libempathy/empathy-tp-call.c | |
parent | 96c4386c12936e18242a878b4ed3ecc36e10a3d7 (diff) | |
download | gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar.gz gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar.bz2 gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar.lz gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar.xz gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.tar.zst gsoc2013-empathy-442ba1971b777a8d76589e2fb13cdb8af5a6e74a.zip |
Disconnect invalidated signal from stream-engine when media channel is closed. Fixes bug #523766.
svn path=/trunk/; revision=822
Diffstat (limited to 'libempathy/empathy-tp-call.c')
-rw-r--r-- | libempathy/empathy-tp-call.c | 32 |
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, |