From 6644bed05f727be79db5e6c1a0595c1619b27194 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 11 Mar 2008 08:19:53 +0000 Subject: Fix: do not close the call channel if stream-engine is not yet started (Alban Crequy) svn path=/trunk/; revision=730 --- libempathy/empathy-tp-call.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libempathy/empathy-tp-call.c') diff --git a/libempathy/empathy-tp-call.c b/libempathy/empathy-tp-call.c index 681d03d85..594eb6d45 100644 --- a/libempathy/empathy-tp-call.c +++ b/libempathy/empathy-tp-call.c @@ -83,6 +83,7 @@ enum }; static guint signals[LAST_SIGNAL]; +static gchar *stream_engine_owner = NULL; G_DEFINE_TYPE (EmpathyTpCall, empathy_tp_call, G_TYPE_OBJECT) @@ -523,11 +524,20 @@ tp_call_watch_name_owner_cb (TpDBusDaemon *daemon, const gchar *new_owner, gpointer call) { - if (G_STR_EMPTY (new_owner)) + /* G_STR_EMPTY(new_owner) means either stream-engine has not started yet or + * has crashed. We want to close the channel if stream-engine has crashed. + * */ + empathy_debug (DEBUG_DOMAIN, "Watch SE: name='%s' old_owner='%s' new_owner='%s'", + name, stream_engine_owner ? stream_engine_owner : "none", + new_owner ? new_owner : "none"); + if (! G_STR_EMPTY(stream_engine_owner) && + G_STR_EMPTY (new_owner)) { empathy_debug (DEBUG_DOMAIN, "Stream engine falled off the bus"); empathy_tp_call_close_channel (call); } + g_free(stream_engine_owner); + stream_engine_owner = g_strdup(new_owner); } static void @@ -654,6 +664,8 @@ tp_call_finalize (GObject *object) g_object_unref (priv->dbus_daemon); } + g_free(stream_engine_owner); + (G_OBJECT_CLASS (empathy_tp_call_parent_class)->finalize) (object); } -- cgit v1.2.3