diff options
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, |