diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-05-23 00:11:59 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-05-24 04:36:02 +0800 |
commit | 9058c6f85dc49f9500e7e67819acfd8c0d2d369c (patch) | |
tree | 5802baf603e0995132e3652a6681068f0d9f060a /modules/mail/e-mail-attachment-handler.c | |
parent | 256422cab27d0b7adbe99fdeaceb72cd78c129bb (diff) | |
download | gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.gz gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.zst gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.zip |
Make EAttachment a little more thread-safe.
EAttachment is now used from worker threads by EMailFormatterAttachment,
so add some thread-safe accessor functions to eliminate potential races.
Added thread-safe functions:
e_attachment_dup_disposition()
e_attachment_ref_file()
e_attachment_ref_file_info()
e_attachment_ref_icon()
e_attachment_ref_mime_part()
e_attachment_dup_description()
e_attachment_dup_thumbnail_path()
Renamed functions:
e_attachment_get_mime_type() -> e_attachment_dup_mime_type()
Removed non-thread-safe functions:
e_attachment_get_file()
e_attachment_get_file_info()
e_attachment_get_icon()
e_attachment_get_mime_part()
e_attachment_get_description()
e_attachment_get_thumbnail_path()
Diffstat (limited to 'modules/mail/e-mail-attachment-handler.c')
-rw-r--r-- | modules/mail/e-mail-attachment-handler.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/mail/e-mail-attachment-handler.c b/modules/mail/e-mail-attachment-handler.c index d041bc9ad1..5e328c4aab 100644 --- a/modules/mail/e-mail-attachment-handler.c +++ b/modules/mail/e-mail-attachment-handler.c @@ -79,7 +79,7 @@ mail_attachment_handler_get_selected_message (EAttachmentHandler *handler) g_return_val_if_fail (g_list_length (selected) == 1, NULL); attachment = E_ATTACHMENT (selected->data); - mime_part = e_attachment_get_mime_part (attachment); + mime_part = e_attachment_ref_mime_part (attachment); outer_wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part)); @@ -128,6 +128,8 @@ exit: if (message == NULL) message = g_object_ref (outer_wrapper); + g_clear_object (&mime_part); + g_list_free_full (selected, (GDestroyNotify) g_object_unref); return message; @@ -477,7 +479,7 @@ mail_attachment_handler_update_actions (EAttachmentView *view, e_attachment_get_saving (attachment)) goto exit; - mime_part = e_attachment_get_mime_part (attachment); + mime_part = e_attachment_ref_mime_part (attachment); if (mime_part != NULL) { CamelMedium *medium; @@ -486,6 +488,8 @@ mail_attachment_handler_update_actions (EAttachmentView *view, medium = CAMEL_MEDIUM (mime_part); content = camel_medium_get_content (medium); visible = CAMEL_IS_MIME_MESSAGE (content); + + g_object_unref (mime_part); } exit: |