Hello community,

here is the log from the commit of package evolution for openSUSE:Factory 
checked in at 2013-02-17 16:57:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/evolution (Old)
 and      /work/SRC/openSUSE:Factory/.evolution.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "evolution", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/evolution/evolution.changes      2013-01-30 
22:18:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.evolution.new/evolution.changes 2013-02-17 
16:58:22.000000000 +0100
@@ -1,0 +2,18 @@
+Fri Feb  8 22:58:23 UTC 2013 - [email protected]
+
+- Added patches from upstream git:
+  + evolution-fix-crash-when-searching.patch (bgo#639698)
+  + evolution-fix-empty-body-reply.patch (bgo#680537)
+  + evolution-fix-message-quoted-twice.patch (bgo#692775)
+  + evolution-fix-text-css-as-attachment.patch (bgo#692009)
+  + evolution-pine-importer.patch (bgo#692781)
+  + evolution-prevent-crash-edit-task-prompt-cancel.patch
+    (bgo#692783)
+  + evolution-prevent-crash-on-folder-rename.patch (bgo#692777)
+  + evolution-schedule-higher-idle-priority-actions.patch
+    (bgo#683867)
+  + evolution-use-G_PRIORITY_HIGH_IDLE.patch (bgo#683867) [with 
+    minor edit to the upstream patch to fix a build error this
+    introduced].
+
+-------------------------------------------------------------------

New:
----
  evolution-fix-crash-when-searching.patch
  evolution-fix-empty-body-reply.patch
  evolution-fix-message-quoted-twice.patch
  evolution-fix-text-css-as-attachment.patch
  evolution-pine-importer.patch
  evolution-prevent-crash-edit-task-prompt-cancel.patch
  evolution-prevent-crash-on-folder-rename.patch
  evolution-schedule-higher-idle-priority-actions.patch
  evolution-use-G_PRIORITY_HIGH_IDLE.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ evolution.spec ++++++
--- /var/tmp/diff_new_pack.3dXEXg/_old  2013-02-17 16:58:23.000000000 +0100
+++ /var/tmp/diff_new_pack.3dXEXg/_new  2013-02-17 16:58:23.000000000 +0100
@@ -33,6 +33,24 @@
 # NOTE: Some files are currently GPL-2.0 but pending relicensing, see 
bnc#749859
 Url:            http://gnome.org/projects/evolution/
 Source0:        
http://download.gnome.org/sources/evolution/3.6/%{name}-%{version}.tar.xz
+# PATCH-FIX-UPSTREAM evolution-fix-crash-when-searching.patch bgo#639698 
[email protected] -- Fix crash when search is initiated on a non-real 
folder; patch taken from upstream git.
+Patch1:         evolution-fix-crash-when-searching.patch
+# PATCH-FIX-UPSTREAM evolution-fix-empty-body-reply.patch bgo#680537 
[email protected] -- Fix a case where replying to a digest mail gives an 
empty-body mail in composer; patch came from upstream git.
+Patch2:         evolution-fix-empty-body-reply.patch
+# PATCH-FIX-UPSTREAM evolution-fix-text-css-as-attachment.patch bgo#692009 
[email protected] -- Fix formatting issues with text/css as attachment
+Patch3:         evolution-fix-text-css-as-attachment.patch
+# PATCH-FIX-UPSTREAM evolution-fix-message-quoted-twice.patch bgo#692775 
[email protected] -- Fix reply to email with both HTML and text constent 
being quoted twice; patch came from upstream
+Patch4:         evolution-fix-message-quoted-twice.patch
+# PATCH-FIX-UPSTREAM evolution-prevent-crash-on-folder-rename.patch bgo#692777 
[email protected] -- Prevent crash on folder rename
+Patch5:         evolution-prevent-crash-on-folder-rename.patch
+# PATCH-FIX-UPSTREAM evolution-prevent-crash-edit-task-prompt-cancel.patch 
bgo#692783 [email protected] -- Prevent a crash when cancelling the prompt 
for editing task; patch taken from upstream git
+Patch6:         evolution-prevent-crash-edit-task-prompt-cancel.patch
+# PATCH-FIX-UPSTREAM evolution-pine-importer.patch bgo#692781 
[email protected] -- Fix abort on book import failure; patch taken from 
upstream git
+Patch7:         evolution-pine-importer.patch
+# PATCH-FIX-UPSTREAM evolution-schedule-higher-idle-priority-actions.patch 
bgo#683867 [email protected] -- Schedule actions with highler idle priority; 
patch taken from upstream git
+Patch8:         evolution-schedule-higher-idle-priority-actions.patch
+# PATCH-FIX-UPSTREAM evolution-use-G_PRIORITY_HIGH_IDLE.patch bgo#683867 
[email protected] -- Use G_PRIORITY_HIGH_IDLE to beat gtk+ redraws; patch 
taken from upstream git
+Patch9:         evolution-use-G_PRIORITY_HIGH_IDLE.patch
 # PATCH-FIX-UPSTREAM bnc-435722-book-uri-long.patch bnc#435722 
[email protected] -- Book URI: Spills Into Second Column.
 Patch19:        bnc-435722-book-uri-long.patch
 BuildRequires:  bison
@@ -125,8 +143,17 @@
 %lang_package
 %prep
 %setup -q
-translation-update-upstream
 %patch19 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+translation-update-upstream
 
 %build
 %if %{need_autogen}


++++++ evolution-fix-crash-when-searching.patch ++++++
>From b19b5a6c30216e7663022bd406bcffbf8e6d5aa3 Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Wed, 23 Jan 2013 14:25:19 +0000
Subject: Bug #639698 - Crash in mail_shell_view_execute_search()

---
diff --git a/modules/mail/e-mail-shell-view.c b/modules/mail/e-mail-shell-view.c
index 29bb788..d500cfc 100644
--- a/modules/mail/e-mail-shell-view.c
+++ b/modules/mail/e-mail-shell-view.c
@@ -546,8 +546,8 @@ all_accounts:
         * account-wide searches still in progress. */
        text = e_shell_searchbar_get_search_text (searchbar);
        if (text == NULL || *text == '\0') {
-               CamelStore *selected_store;
-               gchar *selected_folder_name;
+               CamelStore *selected_store = NULL;
+               gchar *selected_folder_name = NULL;
 
                if (priv->search_account_all != NULL) {
                        g_object_unref (priv->search_account_all);
@@ -565,13 +565,17 @@ all_accounts:
                 * avoid search conflicts, so we can't just grab the
                 * folder URI and let the asynchronous callbacks run
                 * after we've already kicked off the search. */
-               em_folder_tree_get_selected (
-                       folder_tree, &selected_store, &selected_folder_name);
-               folder = camel_store_get_folder_sync (
-                       selected_store, selected_folder_name,
-                       CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
-               e_mail_reader_set_folder (reader, folder);
-               g_object_unref (selected_store);
+               if (em_folder_tree_get_selected (folder_tree, &selected_store, 
&selected_folder_name) &&
+                   selected_store && selected_folder_name) {
+                       folder = camel_store_get_folder_sync (
+                               selected_store, selected_folder_name,
+                               CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
+                       e_mail_reader_set_folder (reader, folder);
+                       g_object_unref (folder);
+               }
+
+               if (selected_store)
+                       g_object_unref (selected_store);
                g_free (selected_folder_name);
 
                gtk_widget_set_sensitive (GTK_WIDGET (combo_box), TRUE);
@@ -610,7 +614,7 @@ all_accounts:
        camel_service_connect_sync (service, NULL, NULL);
 
        search_folder = (CamelVeeFolder *) camel_vee_folder_new (
-               CAMEL_STORE (service), _("All Account Search"), 0);
+               CAMEL_STORE (service), _("All Account Search"), 
CAMEL_STORE_FOLDER_PRIVATE);
        priv->search_account_all = search_folder;
 
        g_object_unref (service);
@@ -643,8 +647,8 @@ current_account:
         * account-wide searches still in progress. */
        text = e_shell_searchbar_get_search_text (searchbar);
        if (text == NULL || *text == '\0') {
-               CamelStore *selected_store;
-               gchar *selected_folder_name;
+               CamelStore *selected_store = NULL;
+               gchar *selected_folder_name = NULL;
 
                if (priv->search_account_current != NULL) {
                        g_object_unref (priv->search_account_current);
@@ -662,13 +666,17 @@ current_account:
                 * avoid search conflicts, so we can't just grab the
                 * folder URI and let the asynchronous callbacks run
                 * after we've already kicked off the search. */
-               em_folder_tree_get_selected (
-                       folder_tree, &selected_store, &selected_folder_name);
-               folder = camel_store_get_folder_sync (
-                       selected_store, selected_folder_name,
-                       CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
-               e_mail_reader_set_folder (reader, folder);
-               g_object_unref (selected_store);
+               if (em_folder_tree_get_selected (folder_tree, &selected_store, 
&selected_folder_name) &&
+                   selected_store && selected_folder_name) {
+                       folder = camel_store_get_folder_sync (
+                               selected_store, selected_folder_name,
+                               CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
+                       e_mail_reader_set_folder (reader, folder);
+                       g_object_unref (folder);
+               }
+
+               if (selected_store)
+                       g_object_unref (selected_store);
                g_free (selected_folder_name);
 
                gtk_widget_set_sensitive (GTK_WIDGET (combo_box), TRUE);
@@ -707,7 +715,7 @@ current_account:
        camel_service_connect_sync (service, NULL, NULL);
 
        search_folder = (CamelVeeFolder *) camel_vee_folder_new (
-               CAMEL_STORE (service), _("Account Search"), 0);
+               CAMEL_STORE (service), _("Account Search"), 
CAMEL_STORE_FOLDER_PRIVATE);
        priv->search_account_current = search_folder;
 
        g_object_unref (service);
--
cgit v0.9.0.2
++++++ evolution-fix-empty-body-reply.patch ++++++
>From 9f5d682172643701e51452c4803db904cd6dbeac Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Wed, 23 Jan 2013 19:06:47 +0000
Subject: Bug #680537 - Reply to individual message in digest generates empty 
body

---
diff --git a/modules/mail/e-mail-attachment-handler.c 
b/modules/mail/e-mail-attachment-handler.c
index 8bc2aad..1623cca 100644
--- a/modules/mail/e-mail-attachment-handler.c
+++ b/modules/mail/e-mail-attachment-handler.c
@@ -60,40 +60,87 @@ static GtkTargetEntry target_table[] = {
        { (gchar *) "x-uid-list",       0, 0 }
 };
 
-static void
-mail_attachment_handler_forward (GtkAction *action,
-                                 EAttachmentHandler *handler)
+static CamelMimeMessage *
+mail_attachment_handler_get_selected_message (EAttachmentHandler *handler)
 {
-       EMailAttachmentHandlerPrivate *priv;
-       EShellSettings *shell_settings;
        EAttachment *attachment;
        EAttachmentView *view;
        CamelMimePart *mime_part;
        CamelDataWrapper *wrapper;
-       EMailForwardStyle style;
-       const gchar *property_name;
+       CamelMimeMessage *message = NULL;
+       CamelContentType *content_type;
        GList *selected;
 
        view = e_attachment_handler_get_view (handler);
-       priv = E_MAIL_ATTACHMENT_HANDLER_GET_PRIVATE (handler);
 
        selected = e_attachment_view_get_selected_attachments (view);
-       g_return_if_fail (g_list_length (selected) == 1);
+       g_return_val_if_fail (g_list_length (selected) == 1, NULL);
 
        attachment = E_ATTACHMENT (selected->data);
        mime_part = e_attachment_get_mime_part (attachment);
        wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
 
+       content_type = camel_data_wrapper_get_mime_type_field (wrapper);
+       if (content_type && camel_content_type_is (content_type, "message", 
"rfc822")) {
+               CamelDataWrapper *inner;
+               CamelContentType *inner_content_type;
+
+               inner = camel_medium_get_content (CAMEL_MEDIUM (wrapper));
+               inner_content_type = camel_data_wrapper_get_mime_type_field 
(inner);
+               if (!camel_content_type_is (inner_content_type, 
content_type->type, content_type->subtype)) {
+                       CamelStream *mem;
+
+                       /* Create a message copy in case the inner content-type 
doesn't match
+                          the mime_part's content type, which can happen for 
multipart/digest,
+                          where it confuses the formatter on reply, which 
skips all rfc822 subparts.
+                       */
+                       mem = camel_stream_mem_new ();
+                       camel_data_wrapper_write_to_stream_sync 
(CAMEL_DATA_WRAPPER (wrapper), mem, NULL, NULL);
+
+                       g_seekable_seek (G_SEEKABLE (mem), 0, G_SEEK_SET, NULL, 
NULL);
+                       message = camel_mime_message_new ();
+                       if (!camel_data_wrapper_construct_from_stream_sync 
(CAMEL_DATA_WRAPPER (message), mem, NULL, NULL)) {
+                               g_object_unref (message);
+                               message = NULL;
+                       }
+
+                       g_object_unref (mem);
+               }
+       }
+
+       if (!message)
+               message = g_object_ref (wrapper);
+
+       g_list_foreach (selected, (GFunc) g_object_unref, NULL);
+       g_list_free (selected);
+
+       return message;
+}
+
+static void
+mail_attachment_handler_forward (GtkAction *action,
+                                 EAttachmentHandler *handler)
+{
+       EMailAttachmentHandlerPrivate *priv;
+       EShellSettings *shell_settings;
+       EMailForwardStyle style;
+       CamelMimeMessage *message;
+       const gchar *property_name;
+
+       priv = E_MAIL_ATTACHMENT_HANDLER_GET_PRIVATE (handler);
+
+       message = mail_attachment_handler_get_selected_message (handler);
+       g_return_if_fail (message != NULL);
+
        property_name = "mail-forward-style";
        shell_settings = e_shell_get_shell_settings (priv->shell);
        style = e_shell_settings_get_int (shell_settings, property_name);
 
        em_utils_forward_message (
                priv->shell, CAMEL_SESSION (priv->session),
-               CAMEL_MIME_MESSAGE (wrapper), style, NULL, NULL);
+               message, style, NULL, NULL);
 
-       g_list_foreach (selected, (GFunc) g_object_unref, NULL);
-       g_list_free (selected);
+       g_object_unref (message);
 }
 
 static void
@@ -102,34 +149,24 @@ mail_attachment_handler_reply (EAttachmentHandler 
*handler,
 {
        EMailAttachmentHandlerPrivate *priv;
        EShellSettings *shell_settings;
-       EAttachment *attachment;
-       EAttachmentView *view;
-       CamelMimePart *mime_part;
-       CamelDataWrapper *wrapper;
        EMailReplyStyle style;
+       CamelMimeMessage *message;
        const gchar *property_name;
-       GList *selected;
 
-       view = e_attachment_handler_get_view (handler);
        priv = E_MAIL_ATTACHMENT_HANDLER_GET_PRIVATE (handler);
 
-       selected = e_attachment_view_get_selected_attachments (view);
-       g_return_if_fail (g_list_length (selected) == 1);
-
-       attachment = E_ATTACHMENT (selected->data);
-       mime_part = e_attachment_get_mime_part (attachment);
-       wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
+       message = mail_attachment_handler_get_selected_message (handler);
+       g_return_if_fail (message != NULL);
 
        property_name = "mail-reply-style";
        shell_settings = e_shell_get_shell_settings (priv->shell);
        style = e_shell_settings_get_int (shell_settings, property_name);
 
        em_utils_reply_to_message (
-               priv->shell, CAMEL_MIME_MESSAGE (wrapper),
+               priv->shell, message,
                NULL, NULL, reply_type, style, NULL, NULL);
 
-       g_list_foreach (selected, (GFunc) g_object_unref, NULL);
-       g_list_free (selected);
+       g_object_unref (message);
 }
 
 static void
--
cgit v0.9.0.2
++++++ evolution-fix-message-quoted-twice.patch ++++++
>From 61f3f5669ac6418c33dd4bbfaef61ee29bd9fecd Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Tue, 29 Jan 2013 13:50:00 +0000
Subject: Bug #692775 - Double-quoting message with HTML and text

---
diff --git a/modules/prefer-plain/e-mail-parser-prefer-plain.c 
b/modules/prefer-plain/e-mail-parser-prefer-plain.c
index 66ff321..02cfd99 100644
--- a/modules/prefer-plain/e-mail-parser-prefer-plain.c
+++ b/modules/prefer-plain/e-mail-parser-prefer-plain.c
@@ -322,6 +322,20 @@ empe_prefer_plain_parse (EMailParserExtension *extension,
        }
 
        if (plain_text_parts) {
+               if (parts && nparts > 1) {
+                       /* a text/html part is hidden, but not marked as 
attachment,
+                          thus do that now, when there exists a text/plain 
part */
+                       GSList *piter;
+
+                       for (piter = parts; piter; piter = g_slist_next 
(piter)) {
+                               EMailPart *mpart = piter->data;
+
+                               if (mpart && mpart->is_hidden && g_strcmp0 
(mpart->mime_type, "text/html") == 0) {
+                                       mpart->is_attachment = TRUE;
+                               }
+                       }
+               }
+
                /* plain_text parts should be always first */
                parts = g_slist_concat (plain_text_parts, parts);
        }
--
cgit v0.9.0.2
++++++ evolution-fix-text-css-as-attachment.patch ++++++
>From d25c6ff68132221ae1369aff29b8d7acbb2fb3aa Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Thu, 24 Jan 2013 12:11:00 +0000
Subject: Bug #692009 - text/css always formatted as attachment

Might be the final change for this bug, the two previous commits
were not using the right approach, causing regression in rendering
of text/* parts which were not named in the list of excluded content
types for a 'raw' formatting.
---
diff --git a/em-format/e-mail-formatter.h b/em-format/e-mail-formatter.h
index 9b4e84d..befa473 100644
--- a/em-format/e-mail-formatter.h
+++ b/em-format/e-mail-formatter.h
@@ -50,6 +50,7 @@ typedef enum {
        E_MAIL_FORMATTER_MODE_NORMAL                    = 0,
        E_MAIL_FORMATTER_MODE_SOURCE,
        E_MAIL_FORMATTER_MODE_RAW,
+       E_MAIL_FORMATTER_MODE_CID,
        E_MAIL_FORMATTER_MODE_PRINTING,
        E_MAIL_FORMATTER_MODE_ALL_HEADERS
 } EMailFormatterMode;
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 9bb3238..9da76863 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -354,7 +354,7 @@ mail_display_resource_requested (WebKitWebView *web_view,
                new_uri = e_mail_part_build_uri (
                        part_list->folder, part_list->message_uid,
                        "part_id", G_TYPE_STRING, uri,
-                       "mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_RAW, NULL);
+                       "mode", G_TYPE_INT, E_MAIL_FORMATTER_MODE_CID, NULL);
 
                webkit_network_request_set_uri (request, new_uri);
 
diff --git a/mail/e-mail-request.c b/mail/e-mail-request.c
index 2794cee..b27b009 100644
--- a/mail/e-mail-request.c
+++ b/mail/e-mail-request.c
@@ -142,15 +142,7 @@ handle_mail_request (GSimpleAsyncResult *res,
                }
 
                if (part) {
-                       CamelContentType *content_type;
-
-                       content_type = camel_mime_part_get_content_type 
(part->part);
-
-                       if (context.mode == E_MAIL_FORMATTER_MODE_RAW && 
content_type &&
-                           camel_content_type_is (content_type, "text", "*") &&
-                           !camel_content_type_is (content_type, "text", 
"plain") &&
-                           !camel_content_type_is (content_type, "text", 
"html") &&
-                           !camel_content_type_is (content_type, "text", 
"calendar")) {
+                       if (context.mode == E_MAIL_FORMATTER_MODE_CID) {
                                CamelDataWrapper *dw;
                                CamelStream *raw_content;
                                GByteArray *ba;
--
cgit v0.9.0.2
++++++ evolution-pine-importer.patch ++++++
>From e0944f093a1dd302cae7995c5e495066fb8b5497 Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Tue, 29 Jan 2013 16:48:40 +0000
Subject: Bug #692781 - [pine-importer] Abort on book failure during contact 
import

---
diff --git a/mail/importers/pine-importer.c b/mail/importers/pine-importer.c
index 664a77b..60a7c54 100644
--- a/mail/importers/pine-importer.c
+++ b/mail/importers/pine-importer.c
@@ -157,7 +157,7 @@ import_contact (EBookClient *book_client,
                        book_client, card, &new_uid, NULL, &error);
 
                if (error != NULL) {
-                       g_error (
+                       g_warning (
                                "%s: Failed to add contact: %s",
                                G_STRFUNC, error->message);
                        g_error_free (error);
--
cgit v0.9.0.2
++++++ evolution-prevent-crash-edit-task-prompt-cancel.patch ++++++
>From ffb1a132cba3700d60a79e250616632a4e1371db Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Tue, 29 Jan 2013 16:07:56 +0000
Subject: Bug #692783 - [mail-to-task] Crash on edit prompt cancel

---
diff --git a/plugins/mail-to-task/mail-to-task.c 
b/plugins/mail-to-task/mail-to-task.c
index 86d644a..553955c 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -821,7 +821,6 @@ do_manage_comp_idle (struct _manage_comp *mc)
        } else {
                /* User canceled editing already existing event, so treat it as 
if he just closed the editor window */
                comp_editor_closed (NULL, FALSE, mc);
-               g_cond_signal (mc->cond);
        }
 
        if (error) {
--
cgit v0.9.0.2
++++++ evolution-prevent-crash-on-folder-rename.patch ++++++
>From 0559de901e376c897515d684b357e6d9566f3b89 Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Tue, 29 Jan 2013 15:52:45 +0000
Subject: Bug #692777 - Crash on folder rename

---
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 24a46ed..bad33f5 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -685,9 +685,6 @@ mail_backend_folder_renamed_cb (MailFolderCache 
*folder_cache,
 
        g_list_free_full (list, (GDestroyNotify) g_object_unref);
 
-       g_free (old_uri);
-       g_free (new_uri);
-
        /* Rename GalView files. */
 
        for (ii = 0; ii < G_N_ELEMENTS (cachenames); ii++) {
@@ -704,6 +701,9 @@ mail_backend_folder_renamed_cb (MailFolderCache 
*folder_cache,
                g_free (newname);
        }
 
+       g_free (old_uri);
+       g_free (new_uri);
+
        /* This does something completely different.
         * XXX Make it a separate signal handler? */
        mail_filter_rename_folder (
--
cgit v0.9.0.2
++++++ evolution-schedule-higher-idle-priority-actions.patch ++++++
>From cabfd4b9f6c9f5f8deaba750529308de7aafde5d Mon Sep 17 00:00:00 2001
From: Michel Dänzer <[email protected]>
Date: Fri, 08 Feb 2013 11:37:46 +0000
Subject: Bug #683867 - Schedule actions with higher idle priority

---
diff --git a/em-format/e-mail-parser.c b/em-format/e-mail-parser.c
index 36e6676..b13ebd9 100644
--- a/em-format/e-mail-parser.c
+++ b/em-format/e-mail-parser.c
@@ -660,9 +660,10 @@ e_mail_parser_wrap_as_attachment (EMailParser *parser,
        }
 
        /* e_attachment_load_async must be called from main thread */
-       g_idle_add (
+       g_idle_add_full (G_PRIORITY_HIGH,
                (GSourceFunc) load_attachment_idle,
-               g_object_ref (empa->attachment));
+               g_object_ref (empa->attachment),
+               NULL);
 
        if (size != 0) {
                GFileInfo *fileinfo;
diff --git a/libemail-engine/e-mail-utils.c b/libemail-engine/e-mail-utils.c
index f29b2f7..3043e06 100644
--- a/libemail-engine/e-mail-utils.c
+++ b/libemail-engine/e-mail-utils.c
@@ -883,7 +883,7 @@ free_mail_cache_thread (gpointer user_data)
 
        G_UNLOCK (photos_cache);
 
-       g_idle_add (free_mail_cache_idle, user_data);
+       g_idle_add_full (G_PRIORITY_HIGH, free_mail_cache_idle, user_data, 
NULL);
 
        return NULL;
 }
diff --git a/libemail-engine/mail-folder-cache.c 
b/libemail-engine/mail-folder-cache.c
index 5561bb6..9c9c17d 100644
--- a/libemail-engine/mail-folder-cache.c
+++ b/libemail-engine/mail-folder-cache.c
@@ -304,8 +304,8 @@ flush_updates (MailFolderCache *cache)
        if (g_queue_is_empty (&cache->priv->updates))
                return;
 
-       cache->priv->update_id = g_idle_add (
-               (GSourceFunc) flush_updates_idle_cb, cache);
+       cache->priv->update_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+               (GSourceFunc) flush_updates_idle_cb, cache, NULL);
 }
 
 /* This is how unread counts work (and don't work):
diff --git a/libemail-utils/mail-mt.c b/libemail-utils/mail-mt.c
index 00b3272..f27a645 100644
--- a/libemail-utils/mail-mt.c
+++ b/libemail-utils/mail-mt.c
@@ -216,7 +216,7 @@ mail_msg_unref (gpointer msg)
 
                /* Destroy the message from an idle callback
                 * so we know we're in the main loop thread. */
-               g_idle_add ((GSourceFunc) mail_msg_free, mail_msg);
+               g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
mail_msg_free, mail_msg, NULL);
        }
 }
 
@@ -429,8 +429,8 @@ mail_msg_proxy (MailMsg *msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
-               idle_source_id = g_idle_add (
-                       (GSourceFunc) mail_msg_idle_cb, NULL);
+               idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+                       (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
 }
 
@@ -484,8 +484,8 @@ mail_msg_main_loop_push (gpointer msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
-               idle_source_id = g_idle_add (
-                       (GSourceFunc) mail_msg_idle_cb, NULL);
+               idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+                       (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
 }
 
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index ac72716..6b9d04f 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -306,7 +306,7 @@ mail_browser_message_list_built_cb (EMailBrowser *browser,
        g_return_if_fail (IS_MESSAGE_LIST (message_list));
 
        if (!message_list_count (message_list))
-               g_idle_add (close_on_idle_cb, browser);
+               g_idle_add_full (G_PRIORITY_DEFAULT, close_on_idle_cb, browser, 
NULL);
 }
 
 static gboolean
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 9da76863..7430a2e 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -1923,7 +1923,7 @@ e_mail_display_reload (EMailDisplay *display)
 
        /* Schedule reloading if neccessary */
        display->priv->scheduled_reload =
-               g_idle_add ((GSourceFunc) do_reload_display, display);
+               g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_reload_display, display, NULL);
 }
 
 GtkAction *
diff --git a/mail/e-mail-ui-session.c b/mail/e-mail-ui-session.c
index 47eeea2..66057c3 100644
--- a/mail/e-mail-ui-session.c
+++ b/mail/e-mail-ui-session.c
@@ -599,7 +599,7 @@ mail_ui_session_add_service (CamelSession *session,
                context->service = g_object_ref (service);
 
                g_idle_add_full (
-                       G_PRIORITY_DEFAULT_IDLE,
+                       G_PRIORITY_DEFAULT,
                        (GSourceFunc) mail_ui_session_add_service_cb,
                        context, (GDestroyNotify) source_context_free);
        }
diff --git a/modules/itip-formatter/itip-view.c 
b/modules/itip-formatter/itip-view.c
index 0e9b39f..c15fa5d 100644
--- a/modules/itip-formatter/itip-view.c
+++ b/modules/itip-formatter/itip-view.c
@@ -5723,7 +5723,7 @@ view_response_cb (ItipView *view,
                        send_item (pitip, view);
                        break;
                case ITIP_VIEW_RESPONSE_OPEN:
-                       g_idle_add (idle_open_cb, pitip);
+                       g_idle_add_full (G_PRIORITY_DEFAULT, idle_open_cb, 
pitip, NULL);
                        return;
                default:
                        break;
diff --git a/plugins/mail-to-task/mail-to-task.c 
b/plugins/mail-to-task/mail-to-task.c
index 553955c..1ff2ccc 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -1014,7 +1014,7 @@ do_mail_to_event (AsyncData *data)
                        if (!e_cal_client_get_object_sync (client, 
icalcomponent_get_uid (icalcomp), NULL, &(mc->stored_comp), NULL, NULL))
                                mc->stored_comp = NULL;
 
-                       g_idle_add ((GSourceFunc) do_manage_comp_idle, mc);
+                       g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_manage_comp_idle, mc, NULL);
 
                        oldmc = mc;
 
diff --git a/shell/e-shell-searchbar.c b/shell/e-shell-searchbar.c
index 7975f74..5c8e050 100644
--- a/shell/e-shell-searchbar.c
+++ b/shell/e-shell-searchbar.c
@@ -1546,7 +1546,7 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
        /* Execute the search when we have time. */
        g_object_ref (shell_view);
        searchbar->priv->state_dirty = FALSE;
-       g_idle_add (idle_execute_search, shell_view);
+       g_idle_add_full (G_PRIORITY_DEFAULT, idle_execute_search, shell_view, 
NULL);
 }
 
 void
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c
index 3d823e6..f9f1b8a 100644
--- a/smime/gui/certificate-manager.c
+++ b/smime/gui/certificate-manager.c
@@ -1078,7 +1078,7 @@ e_cert_manager_config_init (ECertManagerConfig *ecmc)
         * fully initialize itself and start its main loop before we
         * load certificates, since doing so may trigger a password
         * dialog, and dialogs require a main loop. */
-       g_idle_add ((GSourceFunc) populate_ui, ecmc);
+       g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) populate_ui, ecmc, 
NULL);
 
        /* Disconnect cert-manager-notebook from it's window and attach it
         * to this ECertManagerConfig */
--
cgit v0.9.0.2
>From c364610d5f3939d5ee263615a94626602a35a9ae Mon Sep 17 00:00:00 2001
From: Milan Crha <[email protected]>
Date: Fri, 08 Feb 2013 17:26:30 +0000
Subject: Add comments around g_idle_add() changes

---
diff --git a/em-format/e-mail-parser.c b/em-format/e-mail-parser.c
index b13ebd9..213e324 100644
--- a/em-format/e-mail-parser.c
+++ b/em-format/e-mail-parser.c
@@ -660,6 +660,7 @@ e_mail_parser_wrap_as_attachment (EMailParser *parser,
        }
 
        /* e_attachment_load_async must be called from main thread */
+       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
        g_idle_add_full (G_PRIORITY_HIGH,
                (GSourceFunc) load_attachment_idle,
                g_object_ref (empa->attachment),
diff --git a/libemail-engine/e-mail-utils.c b/libemail-engine/e-mail-utils.c
index 3043e06..72a7473 100644
--- a/libemail-engine/e-mail-utils.c
+++ b/libemail-engine/e-mail-utils.c
@@ -883,6 +883,7 @@ free_mail_cache_thread (gpointer user_data)
 
        G_UNLOCK (photos_cache);
 
+       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
        g_idle_add_full (G_PRIORITY_HIGH, free_mail_cache_idle, user_data, 
NULL);
 
        return NULL;
diff --git a/libemail-engine/mail-folder-cache.c 
b/libemail-engine/mail-folder-cache.c
index 9c9c17d..5a02340 100644
--- a/libemail-engine/mail-folder-cache.c
+++ b/libemail-engine/mail-folder-cache.c
@@ -304,6 +304,7 @@ flush_updates (MailFolderCache *cache)
        if (g_queue_is_empty (&cache->priv->updates))
                return;
 
+       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
        cache->priv->update_id = g_idle_add_full (G_PRIORITY_DEFAULT,
                (GSourceFunc) flush_updates_idle_cb, cache, NULL);
 }
diff --git a/libemail-utils/mail-mt.c b/libemail-utils/mail-mt.c
index f27a645..38e4d7c 100644
--- a/libemail-utils/mail-mt.c
+++ b/libemail-utils/mail-mt.c
@@ -216,6 +216,7 @@ mail_msg_unref (gpointer msg)
 
                /* Destroy the message from an idle callback
                 * so we know we're in the main loop thread. */
+               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
                g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
mail_msg_free, mail_msg, NULL);
        }
 }
@@ -429,6 +430,7 @@ mail_msg_proxy (MailMsg *msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
+               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
                idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
                        (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
@@ -484,6 +486,7 @@ mail_msg_main_loop_push (gpointer msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
+               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
                idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
                        (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index 6b9d04f..985beac 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -306,6 +306,7 @@ mail_browser_message_list_built_cb (EMailBrowser *browser,
        g_return_if_fail (IS_MESSAGE_LIST (message_list));
 
        if (!message_list_count (message_list))
+               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
                g_idle_add_full (G_PRIORITY_DEFAULT, close_on_idle_cb, browser, 
NULL);
 }
 
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 7430a2e..9043a45 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -1922,6 +1922,7 @@ e_mail_display_reload (EMailDisplay *display)
                return;
 
        /* Schedule reloading if neccessary */
+       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
        display->priv->scheduled_reload =
                g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_reload_display, display, NULL);
 }
diff --git a/mail/e-mail-ui-session.c b/mail/e-mail-ui-session.c
index 66057c3..2e4ded6 100644
--- a/mail/e-mail-ui-session.c
+++ b/mail/e-mail-ui-session.c
@@ -598,6 +598,7 @@ mail_ui_session_add_service (CamelSession *session,
                context->session = g_object_ref (session);
                context->service = g_object_ref (service);
 
+               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
                g_idle_add_full (
                        G_PRIORITY_DEFAULT,
                        (GSourceFunc) mail_ui_session_add_service_cb,
diff --git a/modules/itip-formatter/itip-view.c 
b/modules/itip-formatter/itip-view.c
index c15fa5d..520ea7b 100644
--- a/modules/itip-formatter/itip-view.c
+++ b/modules/itip-formatter/itip-view.c
@@ -5723,6 +5723,7 @@ view_response_cb (ItipView *view,
                        send_item (pitip, view);
                        break;
                case ITIP_VIEW_RESPONSE_OPEN:
+                       /* schedule with priority higher than gtk+ uses for 
animations (check docs for G_PRIORITY_HIGH_IDLE) */
                        g_idle_add_full (G_PRIORITY_DEFAULT, idle_open_cb, 
pitip, NULL);
                        return;
                default:
diff --git a/plugins/mail-to-task/mail-to-task.c 
b/plugins/mail-to-task/mail-to-task.c
index 1ff2ccc..6986468 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -1014,6 +1014,7 @@ do_mail_to_event (AsyncData *data)
                        if (!e_cal_client_get_object_sync (client, 
icalcomponent_get_uid (icalcomp), NULL, &(mc->stored_comp), NULL, NULL))
                                mc->stored_comp = NULL;
 
+                       /* schedule with priority higher than gtk+ uses for 
animations (check docs for G_PRIORITY_HIGH_IDLE) */
                        g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_manage_comp_idle, mc, NULL);
 
                        oldmc = mc;
diff --git a/shell/e-shell-searchbar.c b/shell/e-shell-searchbar.c
index 5c8e050..4dd8b48 100644
--- a/shell/e-shell-searchbar.c
+++ b/shell/e-shell-searchbar.c
@@ -1546,6 +1546,7 @@ e_shell_searchbar_load_state (EShellSearchbar *searchbar)
        /* Execute the search when we have time. */
        g_object_ref (shell_view);
        searchbar->priv->state_dirty = FALSE;
+       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
        g_idle_add_full (G_PRIORITY_DEFAULT, idle_execute_search, shell_view, 
NULL);
 }
 
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c
index f9f1b8a..978e497 100644
--- a/smime/gui/certificate-manager.c
+++ b/smime/gui/certificate-manager.c
@@ -1077,7 +1077,9 @@ e_cert_manager_config_init (ECertManagerConfig *ecmc)
        /* Run this in an idle callback so Evolution has a chance to
         * fully initialize itself and start its main loop before we
         * load certificates, since doing so may trigger a password
-        * dialog, and dialogs require a main loop. */
+        * dialog, and dialogs require a main loop.
+        * Schedule with priority higher than gtk+ uses for animations
+        * (check docs for G_PRIORITY_HIGH_IDLE). */
        g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) populate_ui, ecmc, 
NULL);
 
        /* Disconnect cert-manager-notebook from it's window and attach it
--
cgit v0.9.0.2
++++++ evolution-use-G_PRIORITY_HIGH_IDLE.patch ++++++
>From 51419ff0d41e034dcd59ab860184f5e4ba752708 Mon Sep 17 00:00:00 2001
From: Matthew Barnes <[email protected]>
Date: Fri, 08 Feb 2013 19:21:42 +0000
Subject: G_PRIORITY_HIGH_IDLE is sufficient to beat GTK+ redraws.

GTK+ uses (G_PRIORITY_HIGH_IDLE + 20) for redrawing operations, which is
actually a slightly lower priority than G_PRIORITY_HIGH_IDLE.  Therefore
for our purpose, G_PRIORITY_HIGH_IDLE is sufficient.

(cherry picked from commit 60d1c3054aa60d02c763538d6b1f16d9d6ab6ade)
---
diff --git a/em-format/e-mail-parser.c b/em-format/e-mail-parser.c
index 213e324..0a44798 100644
--- a/em-format/e-mail-parser.c
+++ b/em-format/e-mail-parser.c
@@ -660,8 +660,9 @@ e_mail_parser_wrap_as_attachment (EMailParser *parser,
        }
 
        /* e_attachment_load_async must be called from main thread */
-       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
-       g_idle_add_full (G_PRIORITY_HIGH,
+       /* Prioritize ahead of GTK+ redraws. */
+       g_idle_add_full (
+               G_PRIORITY_HIGH_IDLE,
                (GSourceFunc) load_attachment_idle,
                g_object_ref (empa->attachment),
                NULL);
diff --git a/libemail-engine/e-mail-utils.c b/libemail-engine/e-mail-utils.c
index 72a7473..52c5fb3 100644
--- a/libemail-engine/e-mail-utils.c
+++ b/libemail-engine/e-mail-utils.c
@@ -883,8 +883,10 @@ free_mail_cache_thread (gpointer user_data)
 
        G_UNLOCK (photos_cache);
 
-       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
-       g_idle_add_full (G_PRIORITY_HIGH, free_mail_cache_idle, user_data, 
NULL);
+       /* Prioritize ahead of GTK+ redraws. */
+       g_idle_add_full (
+               G_PRIORITY_HIGH_IDLE,
+               free_mail_cache_idle, user_data, NULL);
 
        return NULL;
 }
diff --git a/libemail-engine/mail-folder-cache.c 
b/libemail-engine/mail-folder-cache.c
index 5a02340..e6356cb 100644
--- a/libemail-engine/mail-folder-cache.c
+++ b/libemail-engine/mail-folder-cache.c
@@ -304,8 +304,9 @@ flush_updates (MailFolderCache *cache)
        if (g_queue_is_empty (&cache->priv->updates))
                return;
 
-       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
-       cache->priv->update_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+       /* Prioritize ahead of GTK+ redraws. */
+       cache->priv->update_id = g_idle_add_full (
+               G_PRIORITY_HIGH_IDLE,
                (GSourceFunc) flush_updates_idle_cb, cache, NULL);
 }
 
diff --git a/libemail-utils/mail-mt.c b/libemail-utils/mail-mt.c
index 38e4d7c..9e7d9d6 100644
--- a/libemail-utils/mail-mt.c
+++ b/libemail-utils/mail-mt.c
@@ -215,9 +215,11 @@ mail_msg_unref (gpointer msg)
                g_mutex_unlock (mail_msg_lock);
 
                /* Destroy the message from an idle callback
-                * so we know we're in the main loop thread. */
-               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
-               g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
mail_msg_free, mail_msg, NULL);
+                * so we know we're in the main loop thread.
+                * Prioritize ahead of GTK+ redraws. */
+               g_idle_add_full (
+                       G_PRIORITY_HIGH_IDLE,
+                       (GSourceFunc) mail_msg_free, mail_msg, NULL);
        }
 }
 
@@ -430,8 +432,9 @@ mail_msg_proxy (MailMsg *msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
-               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
-               idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+               /* Prioritize ahead of GTK+ redraws. */
+               idle_source_id = g_idle_add_full (
+                       G_PRIORITY_HIGH_IDLE,
                        (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
 }
@@ -486,8 +489,9 @@ mail_msg_main_loop_push (gpointer msg)
 
        G_LOCK (idle_source_id);
        if (idle_source_id == 0)
-               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
-               idle_source_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+               /* Prioritize ahead of GTK+ redraws. */
+               idle_source_id = g_idle_add_full (
+                       G_PRIORITY_HIGH_IDLE,
                        (GSourceFunc) mail_msg_idle_cb, NULL, NULL);
        G_UNLOCK (idle_source_id);
 }
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index 985beac..3e82aca 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -306,8 +306,10 @@ mail_browser_message_list_built_cb (EMailBrowser *browser,
        g_return_if_fail (IS_MESSAGE_LIST (message_list));
 
        if (!message_list_count (message_list))
-               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
-               g_idle_add_full (G_PRIORITY_DEFAULT, close_on_idle_cb, browser, 
NULL);
+               /* Prioritize ahead of GTK+ redraws. */
+               g_idle_add_full (
+                       G_PRIORITY_HIGH_IDLE,
+                       close_on_idle_cb, browser, NULL);
 }
 
 static gboolean
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 9043a45..5594439 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -1921,10 +1921,11 @@ e_mail_display_reload (EMailDisplay *display)
        if (display->priv->scheduled_reload > 0)
                return;
 
-       /* Schedule reloading if neccessary */
-       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
-       display->priv->scheduled_reload =
-               g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_reload_display, display, NULL);
+       /* Schedule reloading if neccessary.
+        * Prioritize ahead of GTK+ redraws. */
+       display->priv->scheduled_reload = g_idle_add_full (
+               G_PRIORITY_HIGH_IDLE,
+               (GSourceFunc) do_reload_display, display, NULL);
 }
 
 GtkAction *
diff --git a/mail/e-mail-ui-session.c b/mail/e-mail-ui-session.c
index 2e4ded6..d608b22 100644
--- a/mail/e-mail-ui-session.c
+++ b/mail/e-mail-ui-session.c
@@ -598,9 +598,9 @@ mail_ui_session_add_service (CamelSession *session,
                context->session = g_object_ref (session);
                context->service = g_object_ref (service);
 
-               /* schedule with priority higher than gtk+ uses for animations 
(check docs for G_PRIORITY_HIGH_IDLE) */
+               /* Prioritize ahead of GTK+ redraws. */
                g_idle_add_full (
-                       G_PRIORITY_DEFAULT,
+                       G_PRIORITY_HIGH_IDLE,
                        (GSourceFunc) mail_ui_session_add_service_cb,
                        context, (GDestroyNotify) source_context_free);
        }
diff --git a/modules/itip-formatter/itip-view.c 
b/modules/itip-formatter/itip-view.c
index 520ea7b..668b718 100644
--- a/modules/itip-formatter/itip-view.c
+++ b/modules/itip-formatter/itip-view.c
@@ -5723,8 +5723,10 @@ view_response_cb (ItipView *view,
                        send_item (pitip, view);
                        break;
                case ITIP_VIEW_RESPONSE_OPEN:
-                       /* schedule with priority higher than gtk+ uses for 
animations (check docs for G_PRIORITY_HIGH_IDLE) */
-                       g_idle_add_full (G_PRIORITY_DEFAULT, idle_open_cb, 
pitip, NULL);
+                       /* Prioritize ahead of GTK+ redraws. */
+                       g_idle_add_full (
+                               G_PRIORITY_HIGH_IDLE,
+                               idle_open_cb, pitip, NULL);
                        return;
                default:
                        break;
diff --git a/modules/mail/e-mail-config-reader.c 
b/modules/mail/e-mail-config-reader.c
index aacfbd9..3bbf766 100644
--- a/modules/mail/e-mail-config-reader.c
+++ b/modules/mail/e-mail-config-reader.c
@@ -84,10 +84,11 @@ static void
 mail_config_reader_constructed (GObject *object)
 {
        /* Bind properties to settings from an idle callback so the
-        * EMailReader interface has a chance to be initialized first. */
+        * EMailReader interface has a chance to be initialized first.
+        * Prioritize ahead of GTK+ redraws. */
        g_idle_add_full (
-               G_PRIORITY_DEFAULT_IDLE,
-               (GSourceFunc) mail_config_reader_idle_cb,
+               G_PRIORITY_HIGH_IDLE,
+               (GSourceFunc) mail_config_reader_idle_cb,
                g_object_ref (object),
                (GDestroyNotify) g_object_unref);
 
diff --git a/plugins/mail-to-task/mail-to-task.c 
b/plugins/mail-to-task/mail-to-task.c
index 6986468..add76e9 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -1014,8 +1014,10 @@ do_mail_to_event (AsyncData *data)
                        if (!e_cal_client_get_object_sync (client, 
icalcomponent_get_uid (icalcomp), NULL, &(mc->stored_comp), NULL, NULL))
                                mc->stored_comp = NULL;
 
-                       /* schedule with priority higher than gtk+ uses for 
animations (check docs for G_PRIORITY_HIGH_IDLE) */
-                       g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) 
do_manage_comp_idle, mc, NULL);
+                       /* Prioritize ahead of GTK+ redraws. */
+                       g_idle_add_full (
+                               G_PRIORITY_HIGH_IDLE,
+                               (GSourceFunc) do_manage_comp_idle, mc, NULL);
 
                        oldmc = mc;
 
diff --git a/shell/e-shell-searchbar.c b/shell/e-shell-searchbar.c
index 4dd8b48..07a38f0 100644
--- a/shell/e-shell-searchbar.c
+++ b/shell/e-shell-searchbar.c
@@ -1544,10 +1544,14 @@ e_shell_searchbar_load_state (EShellSearchbar 
*searchbar)
        gtk_action_unblock_activate (action);
 
        /* Execute the search when we have time. */
+
        g_object_ref (shell_view);
        searchbar->priv->state_dirty = FALSE;
-       /* schedule with priority higher than gtk+ uses for animations (check 
docs for G_PRIORITY_HIGH_IDLE) */
-       g_idle_add_full (G_PRIORITY_DEFAULT, idle_execute_search, shell_view, 
NULL);
+
+       /* Prioritize ahead of GTK+ redraws. */
+       g_idle_add_full (
+               G_PRIORITY_HIGH_IDLE,
+               idle_execute_search, shell_view, NULL);
 }
 
 void
--
cgit v0.9.0.2
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to