diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-11 16:19:53 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-11 16:19:53 +0800 |
commit | 6644bed05f727be79db5e6c1a0595c1619b27194 (patch) | |
tree | 57b3f3ebf72d153589f440368f1f7ff93f7e9d9a /libempathy | |
parent | 8c69e02b3016d69cdbd6c515b3c551b45123cd2e (diff) | |
download | gsoc2013-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.c | 14 |
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); } |