aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-attachment-store.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-05-23 00:11:59 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-05-24 04:36:02 +0800
commit9058c6f85dc49f9500e7e67819acfd8c0d2d369c (patch)
tree5802baf603e0995132e3652a6681068f0d9f060a /e-util/e-attachment-store.c
parent256422cab27d0b7adbe99fdeaceb72cd78c129bb (diff)
downloadgsoc2013-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.c17
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);
}
}