aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-offline-handler.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2004-03-17 18:03:58 +0800
committerMichael Zucci <zucchi@src.gnome.org>2004-03-17 18:03:58 +0800
commit9801f37793cd5ef06da86ce96d52bc66e77083d5 (patch)
treed639e582544a37d02f992075f67eb76279b3646b /mail/mail-offline-handler.c
parentbc5fc28e5b2e3602b186ee430d45c48c919ae9da (diff)
downloadgsoc2013-evolution-9801f37793cd5ef06da86ce96d52bc66e77083d5.tar.gz
gsoc2013-evolution-9801f37793cd5ef06da86ce96d52bc66e77083d5.tar.zst
gsoc2013-evolution-9801f37793cd5ef06da86ce96d52bc66e77083d5.zip
split this, only call add_store/note_store once we've actually set the
2004-03-17 Not Zed <NotZed@Ximian.com> * mail-offline-handler.c (store_go_online): split this, only call add_store/note_store once we've actually set the store online. (store_went_online): set the store up once we're fully online. Works around a deadlock in #55618. svn path=/trunk/; revision=25097
Diffstat (limited to 'mail/mail-offline-handler.c')
-rw-r--r--mail/mail-offline-handler.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/mail/mail-offline-handler.c b/mail/mail-offline-handler.c
index 28cecf2e43..d2b2cdbce0 100644
--- a/mail/mail-offline-handler.c
+++ b/mail/mail-offline-handler.c
@@ -173,15 +173,23 @@ impl_goOffline (PortableServer_Servant servant,
}
static void
+store_went_online(CamelStore *store, void *data)
+{
+ char *name = data;
+
+ em_folder_tree_model_add_store(mail_component_peek_tree_model(mail_component_peek()), store, name);
+ mail_note_store (store, NULL, NULL, NULL);
+ g_free(name);
+}
+
+static void
store_go_online (gpointer key, gpointer value, gpointer data)
{
CamelStore *store = key;
char *name = value;
if (service_is_relevant (CAMEL_SERVICE (store), FALSE)) {
- mail_store_set_offline (store, FALSE, NULL, NULL);
- em_folder_tree_model_add_store(mail_component_peek_tree_model(mail_component_peek()), store, name);
- mail_note_store (store, NULL, NULL, NULL);
+ mail_store_set_offline (store, FALSE, store_went_online, g_strdup(name));
}
}