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 /e-util/e-attachment-store.c | |
parent | 256422cab27d0b7adbe99fdeaceb72cd78c129bb (diff) | |
download | gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.gz gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.bz2 gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.lz gsoc2013-evolution-9058c6f85dc49f9500e7e67819acfd8c0d2d369c.tar.xz 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 'e-util/e-attachment-store.c')
-rw-r--r-- | e-util/e-attachment-store.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/e-util/e-attachment-store.c b/e-util/e-attachment-store.c index 8ea2f8965b..08d7dc49e8 100644 --- a/e-util/e-attachment-store.c +++ b/e-util/e-attachment-store.c @@ -405,9 +405,11 @@ e_attachment_store_get_total_size (EAttachmentStore *store) EAttachment *attachment = iter->data; GFileInfo *file_info; - file_info = e_attachment_get_file_info (attachment); - if (file_info != NULL) + file_info = e_attachment_ref_file_info (attachment); + if (file_info != NULL) { total_size += g_file_info_get_size (file_info); + g_object_unref (file_info); + } } g_list_foreach (list, (GFunc) g_object_unref, NULL); @@ -556,13 +558,18 @@ e_attachment_store_run_save_dialog (EAttachmentStore *store, const gchar *name = NULL; attachment = attachment_list->data; - file_info = e_attachment_get_file_info (attachment); + file_info = e_attachment_ref_file_info (attachment); + if (file_info != NULL) name = g_file_info_get_display_name (file_info); + if (name == NULL) /* Translators: Default attachment filename. */ name = _("attachment.dat"); + gtk_file_chooser_set_current_name (file_chooser, name); + + g_clear_object (&file_info); } response = gtk_dialog_run (GTK_DIALOG (dialog)); @@ -728,7 +735,7 @@ e_attachment_store_get_uris_async (EAttachmentStore *store, EAttachment *attachment = iter->data; GFile *file; - file = e_attachment_get_file (attachment); + file = e_attachment_ref_file (attachment); if (file != NULL) { gchar *uri; @@ -738,6 +745,8 @@ e_attachment_store_get_uris_async (EAttachmentStore *store, /* Mark the list node for deletion. */ trash = g_list_prepend (trash, iter); g_object_unref (attachment); + + g_object_unref (file); } } |