diff options
author | Not Zed <NotZed@Ximian.com> | 2005-02-25 11:39:12 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2005-02-25 11:39:12 +0800 |
commit | d8e8d0fd5040f666121503665914774b34489ed0 (patch) | |
tree | c5f7dad1984cca472ed08e6e3b86169cd4b4ecf8 /mail/mail-component.c | |
parent | 762d734b9a92e245c2b03d8681d4e171732242be (diff) | |
download | gsoc2013-evolution-d8e8d0fd5040f666121503665914774b34489ed0.tar.gz gsoc2013-evolution-d8e8d0fd5040f666121503665914774b34489ed0.tar.zst gsoc2013-evolution-d8e8d0fd5040f666121503665914774b34489ed0.zip |
** See bug #71003
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.
svn path=/trunk/; revision=28884
Diffstat (limited to 'mail/mail-component.c')
-rw-r--r-- | mail/mail-component.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/mail/mail-component.c b/mail/mail-component.c index bd322ebf18..817d23114f 100644 --- a/mail/mail-component.c +++ b/mail/mail-component.c @@ -111,7 +111,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? */ @@ -692,8 +692,16 @@ impl_quit(PortableServer_Servant servant, CORBA_Environment *ev) } /* 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; |