X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-runtime.c;h=b7fa5e7551c6e91ba8d353ee6e85bbeae841fc8d;hp=7f437033a34efd5f215847368ee0c1f619cb55b4;hb=944290c16e0b02bac4daa0e92db938c8aa3b3831;hpb=a9d1306f8141535145b378e612dd427dc7ad358b diff --git a/src/modest-runtime.c b/src/modest-runtime.c index 7f43703..b7fa5e7 100644 --- a/src/modest-runtime.c +++ b/src/modest-runtime.c @@ -46,6 +46,7 @@ #include #include #include +#include static ModestSingletons *_singletons = NULL; @@ -85,22 +86,31 @@ modest_runtime_uninit (void) return TRUE; /* uninit maybe called if runtime_init failed */ g_return_val_if_fail (MODEST_IS_SINGLETONS(_singletons), FALSE); + + g_debug ("%s: cleaning up", __FUNCTION__); + + MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_singletons,""); + g_object_unref(_singletons); + _singletons = NULL; + + g_debug ("%s: cleaned up singletons", __FUNCTION__); if (_account_store) { - modest_runtime_verify_object_last_ref(_account_store,""); - g_object_unref(G_OBJECT(_account_store)); + MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_account_store,""); + g_object_unref(_account_store); _account_store = NULL; } - modest_runtime_verify_object_last_ref(_singletons,""); - g_object_unref(G_OBJECT(_singletons)); - _singletons = NULL; + g_debug ("%s: cleaned up the account store", __FUNCTION__); if (_sig_handlers) { modest_signal_mgr_disconnect_all_and_destroy (_sig_handlers); _sig_handlers = NULL; } + + g_debug ("%s: all cleaned up", __FUNCTION__); + return TRUE; } @@ -179,11 +189,12 @@ modest_runtime_get_platform_factory (void) } ModestTnySendQueue* -modest_runtime_get_send_queue (TnyTransportAccount *account) +modest_runtime_get_send_queue (TnyTransportAccount *account, + gboolean create) { ModestCacheMgr *cache_mgr; GHashTable *send_queue_cache; - gpointer orig_key, send_queue; + gpointer orig_key = NULL, send_queue = NULL; g_return_val_if_fail (_singletons, NULL); g_return_val_if_fail (TNY_IS_TRANSPORT_ACCOUNT(account), NULL); @@ -196,7 +207,8 @@ modest_runtime_get_send_queue (TnyTransportAccount *account) * Note that each modest account will have its own outbox folder, * returned by TnySendQueue::get_outbox_func(). */ - if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue)) { + if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue) && + create) { /* Note that this send queue will start sending messages from its outbox * as soon as it is instantiated: */ send_queue = (gpointer)modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account)); @@ -221,7 +233,7 @@ modest_runtime_get_send_queue (TnyTransportAccount *account) g_object_ref (send_queue)); } - return MODEST_TNY_SEND_QUEUE(send_queue); + return (send_queue) ? MODEST_TNY_SEND_QUEUE(send_queue) : NULL; } void modest_runtime_remove_all_send_queues () @@ -231,6 +243,24 @@ void modest_runtime_remove_all_send_queues () modest_cache_mgr_flush (cache_mgr, MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); } +void +modest_runtime_remove_send_queue (TnyTransportAccount *account) +{ + + ModestCacheMgr *cache_mgr; + GHashTable *send_queue_cache; + + g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (account)); + g_return_if_fail (_singletons); + + cache_mgr = modest_singletons_get_cache_mgr (_singletons); + send_queue_cache = modest_cache_mgr_get_cache (cache_mgr, + MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); + + if (g_hash_table_lookup (send_queue_cache, account)) + g_hash_table_remove (send_queue_cache, account); +} + ModestWindowMgr * modest_runtime_get_window_mgr (void) { @@ -245,9 +275,10 @@ modest_runtime_get_debug_flags () static const GDebugKey debug_keys[] = { { "abort-on-warning", MODEST_RUNTIME_DEBUG_ABORT_ON_WARNING }, { "log-actions", MODEST_RUNTIME_DEBUG_LOG_ACTIONS }, - { "debug-objects", MODEST_RUNTIME_DEBUG_DEBUG_OBJECTS }, - { "debug-signals", MODEST_RUNTIME_DEBUG_DEBUG_SIGNALS }, - { "factory-settings", MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS} + { "debug-objects", MODEST_RUNTIME_DEBUG_OBJECTS }, + { "debug-signals", MODEST_RUNTIME_DEBUG_SIGNALS }, + { "factory-settings", MODEST_RUNTIME_DEBUG_FACTORY_SETTINGS}, + { "debug-code", MODEST_RUNTIME_DEBUG_CODE} }; const gchar *str; static ModestRuntimeDebugFlags debug_flags = -1;