X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-runtime.c;h=aa41989482aa1f35bac82f3a092735136f515f86;hb=61fe7659cae8ab1d32e59c6e2f84e3cf79870d6f;hp=cb99869a7b2723e4c6bc4e4bc435dfd000bda98e;hpb=dafea483f88610df876ce06b513440d3b70be4c8;p=modest diff --git a/src/modest-runtime.c b/src/modest-runtime.c index cb99869..aa41989 100644 --- a/src/modest-runtime.c +++ b/src/modest-runtime.c @@ -45,6 +45,8 @@ #include #include #include +#include +#include static ModestSingletons *_singletons = NULL; @@ -52,6 +54,8 @@ static ModestSingletons *_singletons = NULL; // as it leads to various chicken & problems with initialization static ModestTnyAccountStore *_account_store = NULL; +/* Signal handlers for the send queues */ +static GSList *_sig_handlers = NULL; /* * private functions declared in modest-runtime-priv.h - @@ -82,16 +86,21 @@ modest_runtime_uninit (void) return TRUE; /* uninit maybe called if runtime_init failed */ g_return_val_if_fail (MODEST_IS_SINGLETONS(_singletons), FALSE); - modest_runtime_verify_object_last_ref(_singletons,""); - g_object_unref(G_OBJECT(_singletons)); + + MODEST_DEBUG_VERIFY_OBJECT_LAST_REF(_singletons,""); + g_object_unref(_singletons); _singletons = NULL; 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; } - + + if (_sig_handlers) { + modest_signal_mgr_disconnect_all_and_destroy (_sig_handlers); + _sig_handlers = NULL; + } return TRUE; } @@ -192,6 +201,21 @@ modest_runtime_get_send_queue (TnyTransportAccount *account) * as soon as it is instantiated: */ send_queue = (gpointer)modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account)); + _sig_handlers = + modest_signal_mgr_connect (_sig_handlers, + send_queue, + "error_happened", + G_CALLBACK (modest_ui_actions_on_send_queue_error_happened), + NULL); + + _sig_handlers = + modest_signal_mgr_connect (_sig_handlers, + send_queue, + "status_changed", + G_CALLBACK (modest_ui_actions_on_send_queue_status_changed), + NULL); + + g_hash_table_insert (send_queue_cache, g_object_ref (account), g_object_ref (send_queue)); @@ -221,9 +245,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;