Dominique Leuenberger
2af1038e4c
Add post 3.6.3 commits from upstream as patches to fix important issues (build tested locally); required for 12.3 OBS-URL: https://build.opensuse.org/request/show/154996 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/evolution-data-server?expand=0&rev=150
123 lines
3.9 KiB
Diff
123 lines
3.9 KiB
Diff
From 71257132e4673566a26d8a0f9cb2e066367444bb Mon Sep 17 00:00:00 2001
|
|
From: Matthew Barnes <mbarnes@redhat.com>
|
|
Date: Fri, 01 Feb 2013 12:42:14 +0000
|
|
Subject: store_synchronize_sync() cleanups.
|
|
|
|
(cherry picked from commit ad1b7cd145c5fa5443556c17ba6e9d701c531bb7)
|
|
---
|
|
diff --git a/camel/camel-store.c b/camel/camel-store.c
|
|
index 593b426..e5a1863 100644
|
|
--- a/camel/camel-store.c
|
|
+++ b/camel/camel-store.c
|
|
@@ -343,9 +343,8 @@ store_synchronize_sync (CamelStore *store,
|
|
GError **error)
|
|
{
|
|
GPtrArray *folders;
|
|
- CamelFolder *folder;
|
|
gboolean success = TRUE;
|
|
- gint i;
|
|
+ gint ii;
|
|
GError *local_error = NULL;
|
|
|
|
if (expunge) {
|
|
@@ -353,27 +352,32 @@ store_synchronize_sync (CamelStore *store,
|
|
CamelFolderInfo *root, *fi;
|
|
|
|
folders = g_ptr_array_new ();
|
|
- root = camel_store_get_folder_info_sync (store, NULL, CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL, NULL, NULL);
|
|
+ root = camel_store_get_folder_info_sync (
|
|
+ store, NULL,
|
|
+ CAMEL_STORE_FOLDER_INFO_RECURSIVE |
|
|
+ CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL,
|
|
+ NULL, NULL);
|
|
fi = root;
|
|
- while (fi) {
|
|
+ while (fi != NULL) {
|
|
CamelFolderInfo *next;
|
|
|
|
if ((fi->flags & CAMEL_FOLDER_NOSELECT) == 0) {
|
|
- CamelFolder *fldr;
|
|
+ CamelFolder *folder;
|
|
|
|
- fldr = camel_store_get_folder_sync (store, fi->full_name, 0, NULL, NULL);
|
|
- if (fldr)
|
|
- g_ptr_array_add (folders, fldr);
|
|
+ folder = camel_store_get_folder_sync (
|
|
+ store, fi->full_name, 0, NULL, NULL);
|
|
+ if (folder != NULL)
|
|
+ g_ptr_array_add (folders, folder);
|
|
}
|
|
|
|
/* pick the next */
|
|
next = fi->child;
|
|
- if (!next)
|
|
+ if (next == NULL)
|
|
next = fi->next;
|
|
- if (!next) {
|
|
+ if (next == NULL) {
|
|
next = fi->parent;
|
|
- while (next) {
|
|
- if (next->next) {
|
|
+ while (next != NULL) {
|
|
+ if (next->next != NULL) {
|
|
next = next->next;
|
|
break;
|
|
}
|
|
@@ -385,7 +389,7 @@ store_synchronize_sync (CamelStore *store,
|
|
fi = next;
|
|
}
|
|
|
|
- if (root)
|
|
+ if (root != NULL)
|
|
camel_store_free_folder_info_full (store, root);
|
|
} else {
|
|
/* sync only folders opened until now */
|
|
@@ -395,10 +399,10 @@ store_synchronize_sync (CamelStore *store,
|
|
/* We don't sync any vFolders, that is used to update certain
|
|
* vfolder queries mainly, and we're really only interested in
|
|
* storing/expunging the physical mails. */
|
|
- for (i = 0; i < folders->len; i++) {
|
|
- folder = folders->pdata[i];
|
|
- if (!CAMEL_IS_VEE_FOLDER (folder)
|
|
- && local_error == NULL) {
|
|
+ for (ii = 0; ii < folders->len; ii++) {
|
|
+ CamelFolder *folder = folders->pdata[ii];
|
|
+
|
|
+ if (!CAMEL_IS_VEE_FOLDER (folder) && local_error == NULL) {
|
|
camel_folder_synchronize_sync (
|
|
folder, expunge, cancellable, &local_error);
|
|
ignore_no_such_table_exception (&local_error);
|
|
--
|
|
cgit v0.9.0.2
|
|
From 3e7b237a6242a724830a412b95bbf8a80eb65d99 Mon Sep 17 00:00:00 2001
|
|
From: Matthew Barnes <mbarnes@redhat.com>
|
|
Date: Fri, 01 Feb 2013 12:45:56 +0000
|
|
Subject: store_synchronize_sync(): Only sync subscribed folders.
|
|
|
|
I recently added a Gmane (NNTP) account and have only a few newsgroup
|
|
subscriptions. Yet when I quit Evolution, Camel tries to synchronize
|
|
all 13,872 newsgroups which literally takes days to complete.
|
|
|
|
This adds a CAMEL_STORE_FOLDER_INFO_SUBSCRIBED flag to the request for
|
|
a folder info tree while synchronizing + expunging.
|
|
|
|
Note, CamelIMAPXStore will ignore the CAMEL_STORE_FOLDER_INFO_SUBSCRIBED
|
|
flag if its "use-subscriptions" setting is FALSE, which is what we want.
|
|
|
|
(cherry picked from commit 48b9d17d16be9f0ecb6066036cc83d08b3cca817)
|
|
---
|
|
diff --git a/camel/camel-store.c b/camel/camel-store.c
|
|
index e5a1863..b74126f 100644
|
|
--- a/camel/camel-store.c
|
|
+++ b/camel/camel-store.c
|
|
@@ -355,6 +355,7 @@ store_synchronize_sync (CamelStore *store,
|
|
root = camel_store_get_folder_info_sync (
|
|
store, NULL,
|
|
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
|
|
+ CAMEL_STORE_FOLDER_INFO_SUBSCRIBED |
|
|
CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL,
|
|
NULL, NULL);
|
|
fi = root;
|
|
--
|
|
cgit v0.9.0.2
|