* src/modest-runtime.[ch]: added methods to access a boolean "allow_shutdown".
Modest shutdown that happens on having empty window list and mail op queue
will not happen if this is False.
* src/modest-main.c: only shutdown modest if allow_shutdown is false. Also
set a timeout of 30 minutes (and allow CLI parameters to change this value).
#include "modest-ui-actions.h"
static gboolean show_ui = FALSE;
#include "modest-ui-actions.h"
static gboolean show_ui = FALSE;
+static gint shutdown_timeout = 30;
static GOptionEntry option_entries [] =
{
{ "show-ui", 's', 0, G_OPTION_ARG_NONE, &show_ui, "Show UI immediately, so no wait for DBUS activation", NULL },
static GOptionEntry option_entries [] =
{
{ "show-ui", 's', 0, G_OPTION_ARG_NONE, &show_ui, "Show UI immediately, so no wait for DBUS activation", NULL },
+ { "shutdown-timeout", 't', 0, G_OPTION_ARG_INT, &shutdown_timeout, "Timeout in minutes for running Modest in prestart mode", NULL },
+static guint shutdown_timeout_id = 0;
+
typedef struct {
gulong queue_handler;
gulong window_list_handler;
typedef struct {
gulong queue_handler;
gulong window_list_handler;
{
ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
{
ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
+ if (!modest_runtime_get_allow_shutdown ())
+ return;
+
/* Exit if the queue is empty and there are no more
windows. We can exit as well if the main window is hidden
and it's the only one */
/* Exit if the queue is empty and there are no more
windows. We can exit as well if the main window is hidden
and it's the only one */
{
ModestMailOperationQueue *queue = modest_runtime_get_mail_operation_queue ();
{
ModestMailOperationQueue *queue = modest_runtime_get_mail_operation_queue ();
+ if (!modest_runtime_get_allow_shutdown ())
+ return;
+
/* Exit if there are no more windows and the queue is empty */
if (modest_mail_operation_queue_num_elements (queue) == 0)
g_idle_add_full (G_PRIORITY_LOW, on_idle_exit_modest, user_data, NULL);
}
/* Exit if there are no more windows and the queue is empty */
if (modest_mail_operation_queue_num_elements (queue) == 0)
g_idle_add_full (G_PRIORITY_LOW, on_idle_exit_modest, user_data, NULL);
}
+static gboolean
+shutdown_timeout_handler (gpointer userdata)
+{
+ modest_runtime_set_allow_shutdown (TRUE);
+ return FALSE;
+}
+
int
main (int argc, char *argv[])
{
int
main (int argc, char *argv[])
{
ModestWindow *window;
ModestWindowMgr *mgr;
ModestWindow *window;
ModestWindowMgr *mgr;
+ modest_runtime_set_allow_shutdown (TRUE);
mgr = modest_runtime_get_window_mgr();
window = modest_window_mgr_show_initial_window (mgr);
if (!window) {
mgr = modest_runtime_get_window_mgr();
window = modest_window_mgr_show_initial_window (mgr);
if (!window) {
}
/* Remove new mail notifications if exist */
modest_platform_remove_new_mail_notifications (FALSE);
}
/* Remove new mail notifications if exist */
modest_platform_remove_new_mail_notifications (FALSE);
+ } else {
+ modest_runtime_set_allow_shutdown (FALSE);
+ shutdown_timeout_id = g_timeout_add_seconds (shutdown_timeout * 60, shutdown_timeout_handler, NULL);
/* Signal handlers for the send queues */
static GSList *_sig_handlers = NULL;
/* Signal handlers for the send queues */
static GSList *_sig_handlers = NULL;
+/* will modest shut down when window list and mail op queue are empty? */
+static gboolean _allow_shutdown = TRUE;
+
/*
* private functions declared in modest-runtime-priv.h -
* only to be called from modest-init.c
/*
* private functions declared in modest-runtime-priv.h -
* only to be called from modest-init.c
+gboolean
+modest_runtime_get_allow_shutdown (void)
+{
+ return _allow_shutdown;
+}
+void
+modest_runtime_set_allow_shutdown (gboolean allow)
+{
+ _allow_shutdown = allow;
+}
**/
ModestPluginFactory * modest_runtime_get_plugin_factory (void);
**/
ModestPluginFactory * modest_runtime_get_plugin_factory (void);
+/**
+ * modest_runtime_get_allow_shutdown:
+ *
+ * tell if Modest will shutdown when window list and mail op queue are empty
+ *
+ * Returns: %TRUE if modest shutdown is allowed, %FALSE otherwise
+ */
+gboolean modest_runtime_get_allow_shutdown (void);
+
+/**
+ * modest_runtime_get_allow_shutdown:
+ * @allow: a #gboolean
+ *
+ * set if Modest will shutdown when window list and mail op queue are empty
+ *
+ */
+void modest_runtime_set_allow_shutdown (gboolean allow);