diff options
author | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-06-10 18:16:15 +0800 |
---|---|---|
committer | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-06-10 18:16:15 +0800 |
commit | 3c2afadceeb4c6174030f5d875298522553c39e3 (patch) | |
tree | cc11d987e7413b7d52aa4a864aaa5b17f55c0e45 | |
parent | c13a9b0416ad2cb9731641082214ae5e67d33a21 (diff) | |
parent | 0f7b303eca8ee3c3bdd947ea47249a522c523797 (diff) | |
download | gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.gz gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.bz2 gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.lz gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.xz gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.tar.zst gsoc2013-empathy-3c2afadceeb4c6174030f5d875298522553c39e3.zip |
Merge branch 'ppa-bug-fixes' into debian
-rw-r--r-- | libempathy-gtk/empathy-log-window.c | 2 | ||||
-rw-r--r-- | libempathy/empathy-contact.c | 28 | ||||
-rw-r--r-- | libempathy/empathy-tp-chat.c | 2 |
3 files changed, 24 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c index d2f0a65b5..9f26a5ef8 100644 --- a/libempathy-gtk/empathy-log-window.c +++ b/libempathy-gtk/empathy-log-window.c @@ -2488,7 +2488,7 @@ log_window_got_messages_for_date_cb (GObject *manager, { EmpathyMessage *msg = empathy_message_from_tpl_log_event (event); log_window_append_message (event, msg); - g_object_unref (msg); + tp_clear_object (&msg); } g_object_unref (event); diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 08798fc6c..52dc72bb3 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -627,16 +627,25 @@ empathy_contact_new (TpContact *tp_contact) return retval; } +typedef struct +{ + TplEntity *entity; + TpAccount *account; +} FindContactData; + static gboolean contact_is_tpl_entity (gpointer key, gpointer value, gpointer user_data) { - TpContact *contact = key; - TplEntity *entity = user_data; + EmpathyContact *contact = value; + FindContactData *data = user_data; - return !tp_strdiff (tp_contact_get_identifier (contact), - tpl_entity_get_identifier (entity)); + return !tp_strdiff (empathy_contact_get_id (contact), + tpl_entity_get_identifier (data->entity)) && + !tp_strdiff (tp_proxy_get_object_path (data->account), + tp_proxy_get_object_path ( + empathy_contact_get_account (contact))); } EmpathyContact * @@ -650,8 +659,15 @@ empathy_contact_from_tpl_contact (TpAccount *account, g_return_val_if_fail (TPL_IS_ENTITY (tpl_entity), NULL); if (contacts_table != NULL) - existing_contact = g_hash_table_find (contacts_table, - contact_is_tpl_entity, tpl_entity); + { + FindContactData data; + + data.entity = tpl_entity; + data.account = account; + + existing_contact = g_hash_table_find (contacts_table, + contact_is_tpl_entity, &data); + } if (existing_contact != NULL) { diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 665e87549..4187038a1 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -396,7 +396,7 @@ handle_delivery_report (EmpathyTpChat *self, * TpMessage. (fdo #35884) */ echo = tp_asv_get_boxed (header, "delivery-echo", TP_ARRAY_TYPE_MESSAGE_PART_LIST); - if (echo != NULL && echo->len >= 1) { + if (echo != NULL && echo->len >= 2) { const GHashTable *echo_body; echo_body = g_ptr_array_index (echo, 1); |