diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-05-10 23:08:19 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-05-11 01:16:57 +0800 |
commit | 13664a883d98f204d3006cc9636551996ea38686 (patch) | |
tree | b374dab076f4cfd5438528c306d2d8ac472c448a /mail/em-composer-utils.c | |
parent | 25095070ca8226941e5665609dce3106400a56ff (diff) | |
download | gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar.gz gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar.bz2 gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar.lz gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar.xz gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.tar.zst gsoc2013-evolution-13664a883d98f204d3006cc9636551996ea38686.zip |
Convert e_mail_printer_print() to a proper async function.
This adds a GAsyncReadyCallback and a closure to e_mail_printer_print(),
and trades the "done" signal for e_mail_printer_print_finish() so that
EMailPrinter is a little more reentrant.
(cherry picked from commit 16a95bfa16b3864268e0ab0916bb6c02ec626fe0)
Diffstat (limited to 'mail/em-composer-utils.c')
-rw-r--r-- | mail/em-composer-utils.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 8729fa4cbc..3e2d3c3595 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -944,38 +944,27 @@ em_utils_composer_save_to_outbox_cb (EMsgComposer *composer, } static void -composer_print_done_cb (EMailPrinter *emp, - GtkPrintOperation *operation, - GtkPrintOperationResult result, - gpointer user_data) -{ - g_object_unref (emp); -} - -static void em_utils_composer_print_cb (EMsgComposer *composer, GtkPrintOperationAction action, CamelMimeMessage *message, EActivity *activity, EMailSession *session) { - EMailPrinter *emp; EMailParser *parser; EMailPartList *parts; + EMailPrinter *printer; const gchar *message_id; parser = e_mail_parser_new (CAMEL_SESSION (session)); message_id = camel_mime_message_get_message_id (message); - parts = e_mail_parser_parse_sync (parser, NULL, g_strdup (message_id), message, NULL); - - /* Use EMailPrinter and WebKit to print the message */ - emp = e_mail_printer_new (parts); - g_signal_connect ( - emp, "done", - G_CALLBACK (composer_print_done_cb), NULL); + parts = e_mail_parser_parse_sync ( + parser, NULL, g_strdup (message_id), message, NULL); - e_mail_printer_print (emp, action, NULL, NULL); + /* FIXME Show an alert on error. */ + printer = e_mail_printer_new (parts); + e_mail_printer_print (printer, action, NULL, NULL, NULL, NULL); + g_object_unref (printer); g_object_unref (parts); } |