aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2009-09-21 03:53:14 +0800
committerXavier Claessens <xclaesse@gmail.com>2009-09-21 03:53:14 +0800
commitdb0a8206853d58375960fabe1ae38267ba0576ec (patch)
tree49b35917bce6cc2e9fdf32219e2b932939532f47
parent3f69fecb7d8405f7a9e3c8e7b34665e536b7de0c (diff)
parent1ca52da13f25b623adb55127aee61c6ea2f68bea (diff)
downloadgsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar.gz
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar.bz2
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar.lz
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar.xz
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.tar.zst
gsoc2013-empathy-db0a8206853d58375960fabe1ae38267ba0576ec.zip
Merge commit 'istaz/handle_none'
-rw-r--r--libempathy-gtk/empathy-chat.c7
-rw-r--r--libempathy/empathy-tp-chat.c11
-rw-r--r--src/empathy.c11
3 files changed, 14 insertions, 15 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index d62537110..3931115be 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -1325,20 +1325,19 @@ chat_remote_contact_changed_cb (EmpathyChat *chat)
priv->remote_contact = NULL;
}
+ g_free (priv->id);
+
+ priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
priv->remote_contact = empathy_tp_chat_get_remote_contact (priv->tp_chat);
if (priv->remote_contact != NULL) {
g_object_ref (priv->remote_contact);
priv->handle_type = TP_HANDLE_TYPE_CONTACT;
- g_free (priv->id);
- priv->id = g_strdup (empathy_contact_get_id (priv->remote_contact));
}
else if (priv->tp_chat != NULL) {
TpChannel *channel;
channel = empathy_tp_chat_get_channel (priv->tp_chat);
g_object_get (channel, "handle-type", &priv->handle_type, NULL);
- g_free (priv->id);
- priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
}
chat_update_contacts_visibility (chat);
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index a8b0eeb6f..28b97076d 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -1251,10 +1251,19 @@ const gchar *
empathy_tp_chat_get_id (EmpathyTpChat *chat)
{
EmpathyTpChatPriv *priv = GET_PRIV (chat);
+ const gchar *id;
+
g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
- return tp_channel_get_identifier (priv->channel);
+ id = tp_channel_get_identifier (priv->channel);
+ if (!EMP_STR_EMPTY (id))
+ return id;
+ else if (priv->remote_contact)
+ return empathy_contact_get_id (priv->remote_contact);
+ else
+ return NULL;
+
}
EmpathyContact *
diff --git a/src/empathy.c b/src/empathy.c
index fe9caf6c6..1d478c357 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -100,16 +100,7 @@ dispatch_cb (EmpathyDispatcher *dispatcher,
(empathy_dispatch_operation_get_channel_wrapper (operation));
id = empathy_tp_chat_get_id (tp_chat);
- if (!id)
- {
- EmpathyContact *contact;
-
- contact = empathy_tp_chat_get_remote_contact (tp_chat);
- if (contact)
- id = empathy_contact_get_id (contact);
- }
-
- if (id)
+ if (!EMP_STR_EMPTY (id))
{
EmpathyAccountManager *manager;
TpConnection *connection;