+typedef struct {
+ TnyHeader *header;
+ GtkTreeRowReference *row_reference;
+} MsgReaderInfo;
+
+static void
+message_reader_performer (gboolean canceled,
+ GError *err,
+ GtkWindow *parent_window,
+ TnyAccount *account,
+ gpointer user_data)
+{
+ ModestMailOperation *mail_op = NULL;
+ MsgReaderInfo *info;
+
+ info = (MsgReaderInfo *) user_data;
+ if (canceled || err) {
+ goto frees;
+ }
+
+ /* Register the header - it'll be unregistered in the callback */
+ modest_window_mgr_register_header (modest_runtime_get_window_mgr (), info->header, NULL);
+
+ /* New mail operation */
+ mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
+ modest_ui_actions_disk_operations_error_handler,
+ NULL, NULL);
+
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
+ modest_mail_operation_get_msg (mail_op, info->header, view_msg_cb, info->row_reference);
+ g_object_unref (mail_op);
+
+ frees:
+ /* Frees. The row_reference will be freed by the view_msg_cb callback */
+ g_object_unref (info->header);
+ g_slice_free (MsgReaderInfo, info);
+}
+
+