aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-03-11 16:19:53 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-03-11 16:19:53 +0800
commit6644bed05f727be79db5e6c1a0595c1619b27194 (patch)
tree57b3f3ebf72d153589f440368f1f7ff93f7e9d9a /libempathy
parent8c69e02b3016d69cdbd6c515b3c551b45123cd2e (diff)
downloadgsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar.gz
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar.bz2
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar.lz
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar.xz
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.tar.zst
gsoc2013-empathy-6644bed05f727be79db5e6c1a0595c1619b27194.zip
Fix: do not close the call channel if stream-engine is not yet started (Alban Crequy)
svn path=/trunk/; revision=730
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-call.c14
1 files changed, 13 insertions, 1 deletions
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);
}