Changeset 3704
- Timestamp:
- 06/20/08 11:53:30
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-account.c (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-bs-mime-part.c (modified) (2 diffs)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (3 diffs)
- trunk/libtinymail-camel/tny-camel-queue.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r3702 r3704 1 1 2008-06-20 Jose Dapena Paz <jdapena@igalia.com> 2 3 * libtinymail-camel/tny-camel-folder.c: 4 Fix camel operation references 5 6 * libtinymail-camel/tny-camel-bs-mime-part.c: 7 Fix camel operation references 8 9 * libtinymail-camel/tny-camel-queue.c: 10 Make queue reference to account be weak. 11 12 * libtinymail-camel/tny-camel-account.c: 13 More camel operation reference fixes. 2 14 3 15 * libtinymail/tny-cached-file-stream.c: trunk/libtinymail-camel/tny-camel-account.c
r3666 r3704 775 775 priv->inuse_spin = TRUE; 776 776 777 if (priv->cancel) 777 if (priv->cancel) { 778 778 _tny_camel_account_actual_uncancel (self); 779 camel_operation_unregister (priv->cancel); 780 } 779 781 780 782 priv->cancel = camel_operation_new (func, user_data); 781 783 782 camel_operation_ref (priv->cancel);783 camel_operation_register (priv->cancel);784 784 camel_operation_start (priv->cancel, (char*)what); 785 785 trunk/libtinymail-camel/tny-camel-bs-mime-part.c
r3666 r3704 557 557 if (fpriv->account && TNY_IS_CAMEL_ACCOUNT (fpriv->account)) { 558 558 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (fpriv->account); 559 camel_operation_ref (cancel); 559 560 apriv->getmsg_cancel = cancel; 560 561 } 561 562 } 562 563 563 camel_operation_ref (cancel);564 564 camel_operation_register (cancel); 565 565 camel_operation_start (cancel, (char *) "Getting message part"); … … 589 589 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (fpriv->account); 590 590 apriv->getmsg_cancel = NULL; 591 camel_operation_unref (cancel); 591 592 } 592 593 } trunk/libtinymail-camel/tny-camel-folder.c
r3687 r3704 2509 2509 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (priv->account); 2510 2510 apriv->getmsg_cancel = cancel; 2511 camel_operation_ref (cancel); 2511 2512 } 2512 2513 … … 2515 2516 /* g_static_rec_mutex_lock (priv->folder_lock); */ 2516 2517 2517 camel_operation_ref (cancel);2518 2518 camel_operation_register (cancel); 2519 2519 camel_operation_start (cancel, (char *) "Getting message"); … … 2536 2536 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (priv->account); 2537 2537 apriv->getmsg_cancel = NULL; 2538 camel_operation_unref (cancel); 2538 2539 } 2539 2540 trunk/libtinymail-camel/tny-camel-queue.c
r3666 r3704 40 40 (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_TYPE_CAMEL_QUEUE, TnyCamelQueuePriv)) 41 41 42 static void account_finalized (TnyCamelQueue *queue, GObject *finalized_account); 42 43 43 44 static void … … 47 48 48 49 self->stopped = TRUE; 50 51 g_mutex_lock (self->mutex); 52 if (self->account) 53 g_object_weak_unref (G_OBJECT (self->account), (GWeakNotify) account_finalized, self); 54 g_mutex_unlock (self->mutex); 49 55 50 56 g_static_rec_mutex_lock (self->lock); … … 65 71 } 66 72 73 static void 74 account_finalized (TnyCamelQueue *queue, GObject *finalized_account) 75 { 76 g_mutex_lock (queue->mutex); 77 queue->account = NULL; 78 queue->stopped = TRUE; 79 if (queue->is_waiting) { 80 g_cond_broadcast (queue->condition); 81 } 82 g_mutex_unlock (queue->mutex); 83 } 84 67 85 /** 68 86 * _tny_camel_queue_new … … 79 97 80 98 self->account = account; 99 g_object_weak_ref (G_OBJECT (account), (GWeakNotify) account_finalized, self); 81 100 82 101 return TNY_CAMEL_QUEUE (self); … … 176 195 if (queue->next_uncancel) 177 196 { 178 _tny_camel_account_actual_uncancel (TNY_CAMEL_ACCOUNT (queue->account)); 197 g_mutex_lock (queue->mutex); 198 if (queue->account) { 199 g_object_ref (queue->account); 200 g_mutex_unlock (queue->mutex); 201 _tny_camel_account_actual_uncancel (TNY_CAMEL_ACCOUNT (queue->account)); 202 g_object_unref (queue->account); 203 } else { 204 g_mutex_unlock (queue->mutex); 205 } 179 206 queue->next_uncancel = FALSE; 180 207 } … … 256 283 queue->stopped = TRUE; 257 284 258 g_object_unref (queue->account);259 285 g_object_unref (queue); 260 286 … … 335 361 if (item->flags & TNY_CAMEL_QUEUE_CANCELLABLE_ITEM) { 336 362 if (!(item->flags & TNY_CAMEL_QUEUE_SYNC_ITEM)) { 337 _tny_camel_account_actual_cancel (TNY_CAMEL_ACCOUNT (queue->account)); 363 if (queue->account) 364 _tny_camel_account_actual_cancel (TNY_CAMEL_ACCOUNT (queue->account)); 338 365 queue->next_uncancel = TRUE; 339 366 } … … 388 415 389 416 g_static_rec_mutex_lock (queue->lock); 417 418 if (queue->account == NULL) 419 g_assert ("We should never be running tny_camel_queue_launch_wflags if account was unreferenced"); 390 420 391 421 if (flags & TNY_CAMEL_QUEUE_PRIORITY_ITEM) … … 413 443 queue->stopped = FALSE; 414 444 g_object_ref (queue); 415 g_object_ref (queue->account);416 445 queue->thread = g_thread_create (tny_camel_queue_thread_main_func, 417 446 queue, FALSE, &err);
