2007-06-03 Armin Burgmeier <armin@openismus.com>
authorArmin Burgmeier <armin@openismus.com>
Sun, 3 Jun 2007 11:20:35 +0000 (11:20 +0000)
committerArmin Burgmeier <armin@openismus.com>
Sun, 3 Jun 2007 11:20:35 +0000 (11:20 +0000)
* src/modest-mail-operation-queue.c: Fixed a deadlock in finalize()
when the operation queue was not empty. projects.maemo.org bug
NB#58976.

pmo-trunk-r2052

ChangeLog2
src/modest-mail-operation-queue.c

index 8955d9d..6d4ff91 100644 (file)
@@ -1,9 +1,15 @@
 2007-06-03  Armin Burgmeier  <armin@openismus.com>
 
+       * src/modest-mail-operation-queue.c: Fixed a deadlock in finalize()
+       when the operation queue was not empty. projects.maemo.org bug
+       NB#58976.
+
+2007-06-03  Armin Burgmeier  <armin@openismus.com>
+
        * src/widgets/modest-account-view.c
        (on_account_default_toggled): Toggle default account column
        explicitely instead of waiting for gconf notification (which is
-       currently ignored). This should fix maemo.projects.org bug NB#56910
+       currently ignored). This should fix projects.maemo.org bug NB#56910
        for now. It should probably be removed when gconf notifications are
        re-enabled.
 
index 98a6c65..26bc213 100644 (file)
@@ -43,6 +43,9 @@ static void modest_mail_operation_queue_cancel_no_block_wrapper (ModestMailOpera
 static void modest_mail_operation_queue_cancel_no_block         (ModestMailOperationQueue *op_queue,
                                                                 ModestMailOperation *mail_op);
 
+static void
+modest_mail_operation_queue_cancel_all_no_block (ModestMailOperationQueue *self);
+
 /* list my signals  */
 enum {
        QUEUE_CHANGED_SIGNAL,
@@ -143,7 +146,7 @@ modest_mail_operation_queue_finalize (GObject *obj)
        if (priv->op_queue) {
                /* Cancel all */
                if (!g_queue_is_empty (priv->op_queue))
-                       modest_mail_operation_queue_cancel_all (MODEST_MAIL_OPERATION_QUEUE (obj));
+                       modest_mail_operation_queue_cancel_all_no_block (MODEST_MAIL_OPERATION_QUEUE (obj));
                g_queue_free (priv->op_queue);
        }
 
@@ -267,6 +270,16 @@ modest_mail_operation_queue_cancel_no_block (ModestMailOperationQueue *self,
        modest_mail_operation_queue_remove (self, mail_op);
 }
 
+static void
+modest_mail_operation_queue_cancel_all_no_block (ModestMailOperationQueue *self)
+{
+       ModestMailOperationQueuePrivate *priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE (self);
+
+       g_queue_foreach (priv->op_queue, 
+                        (GFunc) modest_mail_operation_queue_cancel_no_block_wrapper, 
+                        self);
+}
+
 void 
 modest_mail_operation_queue_cancel (ModestMailOperationQueue *self, 
                                    ModestMailOperation *mail_op)
@@ -293,8 +306,6 @@ modest_mail_operation_queue_cancel_all (ModestMailOperationQueue *self)
        priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE(self);
 
        g_mutex_lock (priv->queue_lock);
-       g_queue_foreach (priv->op_queue, 
-                        (GFunc) modest_mail_operation_queue_cancel_no_block_wrapper, 
-                        self);
+       modest_mail_operation_queue_cancel_all_no_block (self);
        g_mutex_unlock (priv->queue_lock);
 }