X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-mail-operation-queue.c;h=02b1f1a3016c296d837feb632c44c5479dc5319b;hp=19cb4ed65b845eb82c4caba4df5898a8b60fe534;hb=8b08d2fd3eebc0584a5c49abdcd26c52b65737f0;hpb=f19d5b6e2df7fb9cea5db37287802d1245a7b796 diff --git a/src/modest-mail-operation-queue.c b/src/modest-mail-operation-queue.c index 19cb4ed..02b1f1a 100644 --- a/src/modest-mail-operation-queue.c +++ b/src/modest-mail-operation-queue.c @@ -31,6 +31,7 @@ #include "modest-marshal.h" #include "modest-mail-operation-queue.h" #include "modest-runtime.h" +#include "modest-debug.h" /* 'private'/'protected' functions */ static void modest_mail_operation_queue_class_init (ModestMailOperationQueueClass *klass); @@ -148,6 +149,16 @@ modest_mail_operation_queue_init (ModestMailOperationQueue *obj) } static void +print_queue_item (ModestMailOperation *op, const gchar* prefix) +{ + gchar *op_str = modest_mail_operation_to_string (op); + g_debug ("%s: %s", + prefix ? prefix : "", + op_str); + g_free (op_str); +} + +static void on_finalize_foreach(gpointer op, gpointer user_data) { @@ -164,6 +175,8 @@ on_finalize_foreach(gpointer op, * the lock acquired. */ g_signal_handlers_disconnect_by_func (mail_op, G_CALLBACK (on_operation_finished), user_data); + MODEST_DEBUG_BLOCK (print_queue_item (mail_op, "cancel/remove");); + modest_mail_operation_cancel (mail_op); g_queue_remove (priv->op_queue, mail_op); g_object_unref (G_OBJECT (mail_op)); @@ -178,6 +191,13 @@ modest_mail_operation_queue_finalize (GObject *obj) g_mutex_lock (priv->queue_lock); + MODEST_DEBUG_BLOCK ( + g_debug ("%s; items in queue: %d", + __FUNCTION__, g_queue_get_length (priv->op_queue)); + g_queue_foreach (priv->op_queue, (GFunc)print_queue_item, "in queue"); + ); + + if (priv->op_queue) { /* Cancel all */ if (!g_queue_is_empty (priv->op_queue)) { @@ -227,6 +247,8 @@ modest_mail_operation_queue_add (ModestMailOperationQueue *self, 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");); /* Get notified when the operation ends to remove it from the queue. We connect it using the *after* because we want to @@ -258,6 +280,8 @@ modest_mail_operation_queue_remove (ModestMailOperationQueue *self, g_queue_remove (priv->op_queue, mail_op); g_mutex_unlock (priv->queue_lock); + MODEST_DEBUG_BLOCK (print_queue_item (mail_op, "remove");); + g_signal_handlers_disconnect_by_func (G_OBJECT (mail_op), G_CALLBACK (on_operation_finished), self); @@ -327,6 +351,8 @@ modest_mail_operation_queue_cancel (ModestMailOperationQueue *self, priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE(self); + MODEST_DEBUG_BLOCK (print_queue_item (mail_op, "cancel");); + /* This triggers a progess_changed signal in which we remove * the operation from the queue. */ modest_mail_operation_cancel (mail_op); @@ -385,7 +411,8 @@ on_find_by_source_foreach (gpointer op, gpointer data) FindBySourceInfo *info = (FindBySourceInfo*) data; if ( info->source == modest_mail_operation_get_source (MODEST_MAIL_OPERATION (op))) { - *(info->new_list) = g_slist_prepend (*(info->new_list), MODEST_MAIL_OPERATION (op)); + g_object_ref (G_OBJECT (op)); + *(info->new_list) = g_slist_prepend (*(info->new_list), MODEST_MAIL_OPERATION (op)); } }