diff options
-rw-r--r-- | mail/ChangeLog | 7 | ||||
-rw-r--r-- | mail/mail-folder-cache.c | 3 | ||||
-rw-r--r-- | mail/mail-ops.c | 2 |
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... */ |