aboutsummaryrefslogtreecommitdiffstats
path: root/modules/mail/e-mail-shell-backend.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-12-05 21:19:04 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-12-08 03:01:04 +0800
commit91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8 (patch)
tree1c06f36fa153eee0779cdfa1be1a24f62e93787d /modules/mail/e-mail-shell-backend.c
parent2f0d83cf74b94d5e6272c07179df6e6c7a929789 (diff)
downloadgsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.gz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.bz2
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.lz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.xz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.zst
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.zip
Make EMailPartList thread-safe.
Exposing data members in the public struct is unwise, especially when EMailPartList is used from multiple threads. Instead keep the members private and provide a set of thread-safe functions to manipulate them.
Diffstat (limited to 'modules/mail/e-mail-shell-backend.c')
-rw-r--r--modules/mail/e-mail-shell-backend.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c
index c05e8518fe..9a56c00357 100644
--- a/modules/mail/e-mail-shell-backend.c
+++ b/modules/mail/e-mail-shell-backend.c
@@ -1061,8 +1061,10 @@ message_parsed_cb (GObject *source_object,
EMailPartList *parts_list;
GObject *preview = user_data;
EMailDisplay *display;
+ CamelFolder *folder;
SoupSession *soup_session;
GHashTable *mails;
+ const gchar *message_uid;
gchar *mail_uri;
display = g_object_get_data (preview, "mbox-imp-display");
@@ -1078,8 +1080,10 @@ message_parsed_cb (GObject *source_object,
g_object_set_data (
G_OBJECT (soup_session), "mails", mails);
}
- mail_uri = e_mail_part_build_uri (
- parts_list->folder, parts_list->message_uid, NULL, NULL);
+
+ folder = e_mail_part_list_get_folder (parts_list);
+ message_uid = e_mail_part_list_get_message_uid (parts_list);
+ mail_uri = e_mail_part_build_uri (folder, message_uid, NULL, NULL);
g_hash_table_insert (mails, mail_uri, parts_list);