aboutsummaryrefslogtreecommitdiffstats
path: root/modules/audio-inline
diff options
context:
space:
mode:
Diffstat (limited to 'modules/audio-inline')
-rw-r--r--modules/audio-inline/e-mail-parser-audio-inline.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/modules/audio-inline/e-mail-parser-audio-inline.c b/modules/audio-inline/e-mail-parser-audio-inline.c
index 5509306118..ca87693fe4 100644
--- a/modules/audio-inline/e-mail-parser-audio-inline.c
+++ b/modules/audio-inline/e-mail-parser-audio-inline.c
@@ -101,15 +101,18 @@ mail_part_audio_inline_free (EMailPart *mail_part)
}
}
-static GSList *
+static gint
empe_audio_inline_parse (EMailParserExtension *extension,
EMailParser *parser,
CamelMimePart *part,
GString *part_id,
- GCancellable *cancellable)
+ GCancellable *cancellable,
+ GQueue *out_mail_queue)
{
EMailPartAudioInline *mail_part;
+ GQueue work_queue = G_QUEUE_INIT;
gint len;
+ gint n_parts_added = 0;
len = part_id->len;
g_string_append (part_id, ".org-gnome-audio-inline-button-panel");
@@ -117,16 +120,22 @@ empe_audio_inline_parse (EMailParserExtension *extension,
d (printf ("audio inline formatter: format classid %s\n", part_id->str));
mail_part = (EMailPartAudioInline *) e_mail_part_subclass_new (
- part, part_id->str, sizeof (EMailPartAudioInline),
- (GFreeFunc) mail_part_audio_inline_free);
+ part, part_id->str, sizeof (EMailPartAudioInline),
+ (GFreeFunc) mail_part_audio_inline_free);
mail_part->parent.mime_type = camel_content_type_simple (
- camel_mime_part_get_content_type (part));
+ camel_mime_part_get_content_type (part));
mail_part->parent.is_attachment = TRUE;
g_string_truncate (part_id, len);
- return e_mail_parser_wrap_as_attachment (
- parser, part, g_slist_append (NULL, mail_part),
- part_id, cancellable);
+ g_queue_push_tail (&work_queue, mail_part);
+ n_parts_added++;
+
+ e_mail_parser_wrap_as_attachment (
+ parser, part, part_id, &work_queue);
+
+ e_queue_transfer (&work_queue, out_mail_queue);
+
+ return TRUE;
}
static guint32