X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodest-tny-account-store.c;h=9d46e757d8b2a22a698d20799b6c8bb297a03a44;hb=43e62768748b9385ba4ba926c14c59ed2eaa3f9f;hp=a2dee462c43191e275beba0b635bff720331abc9;hpb=7ce8c45b7110d79e5f36ef4383a436f698a774bf;p=modest diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index a2dee46..9d46e75 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -244,6 +244,23 @@ account_list_free (GSList *accounts) g_slist_free (accounts); } + + +/* disconnect the list of TnyAccounts */ +static void +account_list_disconnect (GSList *accounts) +{ + GSList *cursor = accounts; + + while (cursor) { + if (TNY_IS_CAMEL_ACCOUNT(cursor->data)) /* check twice... */ + tny_camel_account_set_online (TNY_CAMEL_ACCOUNT(cursor->data), FALSE, NULL); + cursor = g_slist_next (cursor); + } +} + + + static void recreate_all_accounts (ModestTnyAccountStore *self) { @@ -544,6 +561,12 @@ modest_tny_account_store_finalize (GObject *obj) priv->device = NULL; } + /* disconnect all accounts when we are destroyed */ + g_debug ("modest: disconnecting all store accounts"); + account_list_disconnect (priv->store_accounts); + g_debug ("modest: disconnecting all transport accounts"); + account_list_disconnect (priv->transport_accounts); + /* this includes the local folder */ account_list_free (priv->store_accounts); priv->store_accounts = NULL; @@ -577,17 +600,14 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, TnyDevice *device) priv->device = g_object_ref (device); priv->session = tny_session_camel_new (TNY_ACCOUNT_STORE(obj)); + if (!priv->session) { + g_warning ("failed to get TnySessionCamel"); + return NULL; + } tny_session_camel_set_ui_locker (priv->session, tny_gtk_lockable_new ()); - /* FIXME: unref this in the end? */ tny_session_camel_set_async_connecting (priv->session, TRUE); - - /* force a cache fill... ugly */ - /* list = TNY_LIST(tny_simple_list_new()); */ -/* tny_account_store_get_accounts (TNY_ACCOUNT_STORE(obj), list, */ -/* TNY_ACCOUNT_STORE_BOTH); */ -/* g_object_unref(list); */ - + /* Connect signals */ g_signal_connect (G_OBJECT(account_mgr), "account_changed", G_CALLBACK (on_account_changed), obj); @@ -962,8 +982,10 @@ modest_tny_account_store_alert (TnyAccountStore *self, TnyAlertType type, * specific dialog messages from Chapter 12 of the UI spec. */ case TNY_ACCOUNT_STORE_ERROR_UNKNOWN_ALERT: -/* g_debug ("%s: Handling GError domain=%d, code=%d, message=%s", */ -/* __FUNCTION__, error->domain, error->code, error->message); */ + /* This debug output is useful. Please keep it uncommented until + * we have fixed the problems in this function: */ + g_debug ("%s: Handling GError domain=%d, code=%d, message=%s", + __FUNCTION__, error->domain, error->code, error->message); /* TODO: Remove the internal error message for the real release. * This is just so the testers can give us more information: */