[evolution-patches] 71003, threads running at exit
- From: Not Zed <notzed ximian com>
- To: evolution-patches lists ximian com
- Subject: [evolution-patches] 71003, threads running at exit
- Date: Mon, 21 Feb 2005 12:42:10 +0800
somehow the quit code lost the thread shutdown stuff
this might alleviate some of the 'mailbox resyncing' problems, if people do filtering and/or automatic mail fetching
? mail/ems.diff
? mail/evolution-mail-2.0.schemas
? mail/m.diff
? mail/ma.diff
? mail/default/zh_CN/Makefile
? mail/default/zh_CN/Makefile.in
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.3576
diff -u -p -r1.3576 ChangeLog
--- mail/ChangeLog 18 Feb 2005 16:43:55 -0000 1.3576
+++ mail/ChangeLog 21 Feb 2005 04:45:25 -0000
@@ -1,3 +1,10 @@
+2005-02-21 Not Zed <NotZed Ximian com>
+
+ ** See bug #71003
+
+ * mail-component.c (impl_quit): add a new state MC_QUIT_THREADS to
+ wait for all mail threads to finish before quitting.
+
2005-02-18 Rodney Dawes <dobey novell com>
* mail/em-folder-view.c (emfv_popup_copy_text): New method to copy
Index: mail/mail-component.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-component.c,v
retrieving revision 1.106
diff -u -p -r1.106 mail-component.c
--- mail/mail-component.c 1 Feb 2005 08:35:03 -0000 1.106
+++ mail/mail-component.c 21 Feb 2005 04:45:25 -0000
@@ -108,7 +108,7 @@ struct _MailComponentPrivate {
GMutex *lock;
/* states/data used during shutdown */
- enum { MC_QUIT_START, MC_QUIT_SYNC } quit_state;
+ enum { MC_QUIT_START, MC_QUIT_SYNC, MC_QUIT_THREADS } quit_state;
int quit_count;
int quit_expunge; /* expunge on quit this time around? */
@@ -669,8 +669,16 @@ impl_quit(PortableServer_Servant servant
}
/* Falls through */
case MC_QUIT_SYNC:
- return mc->priv->quit_count == 0;
- /* What else do we need to do at quit time? */
+ if (mc->priv->quit_count > 0)
+ return TRUE;
+
+ mail_cancel_all();
+ mc->priv->quit_state = MC_QUIT_THREADS;
+
+ /* Falls through */
+ case MC_QUIT_THREADS:
+ /* should we keep cancelling? */
+ return mail_msg_active((unsigned int)-1) == 0;
}
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]