aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2000-09-10 01:30:52 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2000-09-10 01:30:52 +0800
commit6c42500a9e9827d875d9934d97adfe709844f80e (patch)
tree076718cd56eed387cc711226dcfea947066d4e0c /mail/mail-ops.c
parenta528ec34eff01a96915a4efc60f951aea7c8e1e2 (diff)
downloadgsoc2013-evolution-6c42500a9e9827d875d9934d97adfe709844f80e.tar.gz
gsoc2013-evolution-6c42500a9e9827d875d9934d97adfe709844f80e.tar.zst
gsoc2013-evolution-6c42500a9e9827d875d9934d97adfe709844f80e.zip
Freeze the default folder before filtering and thaw it afterward to
2000-09-09 Jeffrey Stedfast <fejj@helixcode.com> * mail-ops.c (do_fetch_mail): Freeze the default folder before filtering and thaw it afterward to prevent a ton of "folder_changed" signals from being queued. svn path=/trunk/; revision=5286
Diffstat (limited to 'mail/mail-ops.c')
-rw-r--r--mail/mail-ops.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 8a507e01fc..0335910259 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -158,6 +158,8 @@ do_fetch_mail (gpointer in_data, gpointer op_data, CamelException *ex)
camel_object_hook_event (CAMEL_OBJECT (input->destination), "folder_changed",
input->hook_func, input->hook_data);
+ camel_folder_freeze (input->destination);
+
uids = camel_folder_get_uids (folder);
for (i = 0; i < uids->len; i++) {
CamelMimeMessage *message;
@@ -197,7 +199,15 @@ do_fetch_mail (gpointer in_data, gpointer op_data, CamelException *ex)
}
camel_object_unref (CAMEL_OBJECT (message));
}
- camel_folder_sync (folder, TRUE, ex);
+
+ camel_folder_sync (folder, FALSE, ex);
+
+ camel_folder_thaw (input->destination);
+
+ if (input->hook_func)
+ camel_object_unhook_event (CAMEL_OBJECT (folder), "folder_changed",
+ input->hook_func, input->hook_data);
+
camel_folder_free_uids (folder, uids);
data->empty = FALSE;