diff options
-rw-r--r-- | camel/ChangeLog | 12 | ||||
-rw-r--r-- | camel/camel-store.c | 5 | ||||
-rw-r--r-- | camel/camel-vee-folder.c | 4 |
3 files changed, 19 insertions, 2 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 79932332d1..2aacd3d40b 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,15 @@ +2004-05-19 Not Zed <NotZed@Ximian.com> + + ** See #58641. + + * camel-vee-folder.c (vee_sync): don't rebuild auto-type vfolders. + they should always be consistent and it saves a lot of unecessary + work. + + * camel-store.c (store_sync): we don't want to sync any vfolders + as part of the store sync call. its used for a different purpose + in vFolders. oh well its a hack. + 2004-05-18 Not Zed <NotZed@Ximian.com> * providers/local/camel-maildir-store.c (fill_fi): do the same diff --git a/camel/camel-store.c b/camel/camel-store.c index 3b6b60afff..14e3d073ee 100644 --- a/camel/camel-store.c +++ b/camel/camel-store.c @@ -651,11 +651,14 @@ store_sync (CamelStore *store, int expunge, CamelException *ex) CamelException x; int i; + /* 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 */ camel_exception_init(&x); folders = camel_object_bag_list(store->folders); for (i=0;i<folders->len;i++) { folder = folders->pdata[i]; - if (!camel_exception_is_set(&x)) + if (!CAMEL_IS_VEE_FOLDER(folder) + && !camel_exception_is_set(&x)) camel_folder_sync(folder, expunge, &x); camel_object_unref(folder); } diff --git a/camel/camel-vee-folder.c b/camel/camel-vee-folder.c index cf4301df03..c74b001cc9 100644 --- a/camel/camel-vee-folder.c +++ b/camel/camel-vee-folder.c @@ -634,7 +634,9 @@ vee_sync(CamelFolder *folder, gboolean expunge, CamelException *ex) break; } - if (vee_folder_build_folder(vf, f, ex) == -1) + /* auto update vfolders shouldn't need a rebuild */ + if ((vf->flags & CAMEL_STORE_VEE_FOLDER_AUTO) == 0 + && vee_folder_build_folder(vf, f, ex) == -1) break; node = node->next; |