aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog7
-rw-r--r--mail/mail-folder-cache.c3
-rw-r--r--mail/mail-ops.c2
3 files changed, 11 insertions, 1 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 59a8661ab1..53658f3a07 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,11 +1,18 @@
2001-10-03 <NotZed@Ximian.com>
+ * mail-folder-cache.c (folder_changed): Dont wait for event to
+ finish before returning. This could however mean we process it
+ after things have vanished below us? Fixes another case of ctrl-d
+ deadlock.
+
* folder-browser.c (update_status_bar): If we have hide deleted
set, then dont count deleted messages in the 'total' messages
count. Fixes #6591.
* mail-ops.c (add_vtrash_info): If we have a fragment, override
that, rather than the path. Fixes #5251.
+ (remove_folder_get): Freeze/thaw around deleting all messages in
+ folder.
2001-10-03 Rodrigo Moya <rodrigo@ximian.com>
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index 5d5f81e2a9..3212fce3ff 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -196,7 +196,8 @@ folder_changed(CamelObject *o, gpointer event_data, gpointer user_data)
return;
d(printf("Fodler changed!\n"));
- mail_msg_wait(mail_proxy_event((CamelObjectEventHookFunc)real_folder_changed, o, NULL, mfi));
+ /* hopefully our mfi isn't lost while this is executing ... */
+ mail_proxy_event((CamelObjectEventHookFunc)real_folder_changed, o, NULL, mfi);
}
static void
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index b8cd1309f7..371a12f626 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -1382,9 +1382,11 @@ remove_folder_get (struct _mail_msg *mm)
/* Delete every message in this folder, then expunge it */
uids = camel_folder_get_uids (folder);
+ camel_folder_freeze(folder);
for (i = 0; i < uids->len; i++)
camel_folder_delete_message (folder, uids->pdata[i]);
camel_folder_sync (folder, TRUE, NULL);
+ camel_folder_thaw(folder);
camel_folder_free_uids (folder, uids);
/* if the store supports subscriptions, unsubscribe from this folder... */