From: Sergio Villar Senin Date: Mon, 14 Sep 2009 16:55:21 +0000 (+0200) Subject: Fixes NB#138110, sometimes manual send&receive does not work X-Git-Tag: 3.0.17-rc55~1 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=e9fce077ab54bbcca027ce4de4a8712ac65c85d5 Fixes NB#138110, sometimes manual send&receive does not work Reset the TnyDevice when a new operation/window comes after running shutdown Use the tny_device_is_forced new API --- diff --git a/src/modest-mail-operation-queue.c b/src/modest-mail-operation-queue.c index 22bbd53..c4611bf 100644 --- a/src/modest-mail-operation-queue.c +++ b/src/modest-mail-operation-queue.c @@ -228,6 +228,28 @@ modest_mail_operation_queue_new (void) } static void +on_operation_started (ModestMailOperation *mail_op, + gpointer user_data) +{ + ModestMailOperationQueue *self = MODEST_MAIL_OPERATION_QUEUE (user_data); + ModestMailOperationTypeOperation op_type; + ModestMailOperationQueuePrivate *priv; + TnyDevice *device; + + priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE(self); + + op_type = modest_mail_operation_get_type_operation (mail_op); + device = modest_runtime_get_device (); + + if ((op_type != MODEST_MAIL_OPERATION_TYPE_SHUTDOWN) && + priv->running_final_sync && + tny_device_is_forced (device)) + tny_device_reset (device); + + priv->running_final_sync = (op_type == MODEST_MAIL_OPERATION_TYPE_SHUTDOWN); +} + +static void on_operation_finished (ModestMailOperation *mail_op, gpointer user_data) { @@ -248,21 +270,24 @@ modest_mail_operation_queue_add (ModestMailOperationQueue *self, priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE(self); - priv->running_final_sync = (modest_mail_operation_get_type_operation (mail_op) == MODEST_MAIL_OPERATION_TYPE_SHUTDOWN); - g_mutex_lock (priv->queue_lock); g_queue_push_tail (priv->op_queue, g_object_ref (mail_op)); g_mutex_unlock (priv->queue_lock); MODEST_DEBUG_BLOCK (print_queue_item (mail_op, "add");); + g_signal_connect (G_OBJECT (mail_op), + "operation-started", + G_CALLBACK (on_operation_started), + self); + /* Get notified when the operation ends to remove it from the queue. We connect it using the *after* because we want to let the other handlers for the finish function happen before this */ - g_signal_connect_after (G_OBJECT (mail_op), + g_signal_connect_after (G_OBJECT (mail_op), "operation-finished", - G_CALLBACK (on_operation_finished), + G_CALLBACK (on_operation_finished), self); /* Notify observers */ diff --git a/src/widgets/modest-window-mgr.c b/src/widgets/modest-window-mgr.c index e750488..87848b7 100644 --- a/src/widgets/modest-window-mgr.c +++ b/src/widgets/modest-window-mgr.c @@ -539,13 +539,9 @@ modest_window_mgr_register_window (ModestWindowMgr *self, /* If this is the first registered window then reset the status of the TnyDevice as it might be forced to be offline when modest is running in the background (see - modest_tny_account_store_new() and automatic updates are - disabled*/ + modest_tny_account_store_new()) */ if (modest_window_mgr_get_num_windows (self) == 0) { - gboolean auto_update; - auto_update = modest_conf_get_bool (modest_runtime_get_conf (), - MODEST_CONF_AUTO_UPDATE, NULL); - if (!auto_update) + if (tny_device_is_forced (modest_runtime_get_device ())) tny_device_reset (modest_runtime_get_device ()); }