From cb9d644a2ee55614b35dfdec6a7731db4ed1e35c Mon Sep 17 00:00:00 2001 From: 3 Date: Wed, 3 Oct 2001 18:48:47 +0000 Subject: Dont wait for event to finish before returning. This could however mean we 2001-10-03 * 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. * mail-ops.c (remove_folder_get): Freeze/thaw around deleting all messages in folder. svn path=/trunk/; revision=13382 --- mail/ChangeLog | 7 +++++++ mail/mail-folder-cache.c | 3 ++- mail/mail-ops.c | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) (limited to 'mail') 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 + * 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 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... */ -- cgit v1.2.3