diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2012-12-05 21:19:04 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2012-12-08 03:01:04 +0800 |
commit | 91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8 (patch) | |
tree | 1c06f36fa153eee0779cdfa1be1a24f62e93787d /mail/e-mail-printer.c | |
parent | 2f0d83cf74b94d5e6272c07179df6e6c7a929789 (diff) | |
download | gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.gz 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 'mail/e-mail-printer.c')
-rw-r--r-- | mail/e-mail-printer.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/mail/e-mail-printer.c b/mail/e-mail-printer.c index 92642bb996..30c8517a50 100644 --- a/mail/e-mail-printer.c +++ b/mail/e-mail-printer.c @@ -201,11 +201,17 @@ emp_start_printing (GObject *object, static void emp_run_print_operation (EMailPrinter *emp) { + EMailPartList *part_list; + CamelFolder *folder; + const gchar *message_uid; gchar *mail_uri; + part_list = emp->priv->parts_list; + folder = e_mail_part_list_get_folder (part_list); + message_uid = e_mail_part_list_get_message_uid (part_list); + mail_uri = e_mail_part_build_uri ( - emp->priv->parts_list->folder, - emp->priv->parts_list->message_uid, + folder, message_uid, "__evo-load-image", G_TYPE_BOOLEAN, TRUE, "mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_PRINTING, NULL); @@ -623,6 +629,7 @@ emp_set_parts_list (EMailPrinter *emp, EMailPartList *parts_list) { CamelMediumHeader *header; + CamelMimeMessage *message; GArray *headers; gint i; GtkTreeIter last_known = { 0 }; @@ -637,7 +644,8 @@ emp_set_parts_list (EMailPrinter *emp, 5, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_INT); - headers = camel_medium_get_headers (CAMEL_MEDIUM (parts_list->message)); + message = e_mail_part_list_get_message (parts_list); + headers = camel_medium_get_headers (CAMEL_MEDIUM (message)); if (!headers) return; @@ -676,7 +684,7 @@ emp_set_parts_list (EMailPrinter *emp, COLUMN_HEADER_STRUCT, emfh, -1); } - camel_medium_free_headers (CAMEL_MEDIUM (parts_list->message), headers); + camel_medium_free_headers (CAMEL_MEDIUM (message), headers); } static void |