Changeset 3104
- Timestamp:
- 12/12/07 20:39:13
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-folder.c (modified) (5 diffs)
- trunk/libtinymail-camel/tny-camel-full-msg-receive-strategy.c (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-msg-header-priv.h (modified) (2 diffs)
- trunk/libtinymail-camel/tny-camel-msg-header.c (modified) (4 diffs)
- trunk/libtinymail-camel/tny-camel-partial-msg-receive-strategy.c (modified) (1 diff)
- trunk/libtinymail/tny-merge-folder.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r3103 r3104 1 2007-12-12 Jose Dapena Paz <jdapena@igalia.com> 2 3 * libtinymail-camel/tny-camel-folder.c: load camel folder before 4 getting the url string of it. 5 * libtinymail-camel/tny-camel-msg-header.c: now the decorated header 6 can be added with g_object_ref or a weak reference. 7 * libtinymail-camel/tny-camel-folder.c: now the TnyCamelHeader we 8 use to retrieve the message in find_msg is constructed from summary. 9 This is created in a way it's persistent, and then, we can access 10 properly to the summary flags. We also eturn null and set error if 11 message is not in summary. 12 * libtinymail-camel/tny-camel-full-msg-receive-strategy.c 13 libtinymail-camel/tny-camel-partial-msg-receive-strategy.c: 14 use the new TnyCamelMsgHeader decorator api. 15 * Fixed minor build issues. 16 1 17 2007-12-12 Philip Van Hoof <pvanhoof@gnome.org> 2 18 trunk/libtinymail-camel/tny-camel-folder.c
r3102 r3104 177 177 TnyCamelFolderPriv *priv = TNY_CAMEL_FOLDER_GET_PRIVATE (self); 178 178 TnyCamelAccountPriv *apriv = TNY_CAMEL_ACCOUNT_GET_PRIVATE (priv->account); 179 TnyIterator *iter;180 179 GList *list, *list_iter; 181 180 … … 210 209 notify_folder_observers_about (TNY_FOLDER (info->self), 211 210 TNY_FOLDER_CHANGE (info->change)); 211 212 212 return FALSE; 213 213 } … … 2466 2466 if (uid && uid[0] != '/' && strlen (uid) > 0) 2467 2467 { 2468 info = camel_message_info_new_uid (NULL, uid); 2469 hdr = _tny_camel_header_new (); 2470 2471 /* This adds a reason to live to self */ 2472 _tny_camel_header_set_folder (TNY_CAMEL_HEADER (hdr), 2473 TNY_CAMEL_FOLDER (self), priv); 2474 /* hdr will take care of the freeup */ 2475 _tny_camel_header_set_as_memory (TNY_CAMEL_HEADER (hdr), info); 2476 retval = tny_msg_receive_strategy_perform_get_msg (priv->receive_strat, self, hdr, err); 2477 g_object_unref (hdr); 2478 reset_local_size (priv); 2468 TnyHeader *nhdr; 2469 info = camel_folder_get_message_info (priv->folder, uid); 2470 if (info == NULL) { 2471 g_set_error (err, TNY_FOLDER_ERROR, TNY_FOLDER_ERROR_GET_MSG, 2472 "Message uid not found in folder"); 2473 retval = NULL; 2474 } else { 2475 hdr = _tny_camel_header_new (); 2476 _tny_camel_header_set_folder ((TnyCamelHeader *) hdr, (TnyCamelFolder *) self, priv); 2477 _tny_camel_header_set_camel_message_info ((TnyCamelHeader *) hdr, info, FALSE); 2478 2479 retval = tny_msg_receive_strategy_perform_get_msg (priv->receive_strat, self, hdr, err); 2480 if (retval) { 2481 nhdr = tny_msg_get_header (retval); 2482 /* This trick is for forcing owning a TnyCamelHeader reference */ 2483 _tny_camel_msg_header_set_decorated (nhdr, hdr, TRUE); 2484 g_object_unref (nhdr); 2485 } 2486 g_object_unref (hdr); 2487 reset_local_size (priv); 2488 } 2479 2489 2480 2490 } else { … … 4417 4427 TnyFolderStoreChange *change; 4418 4428 CamelException subex = CAMEL_EXCEPTION_INITIALISER; 4419 TnyCamelFolderPriv *rpriv = NULL;4420 4429 gboolean was_new = FALSE; 4421 4430 … … 5292 5301 { 5293 5302 char *urls = camel_service_get_url (apriv->service); 5303 if (!priv->folder) 5304 load_folder_no_lock (priv); 5294 5305 const char *foln = camel_folder_get_full_name (priv->folder); 5295 5306 retval = g_strdup_printf ("%s/%s", urls, foln); trunk/libtinymail-camel/tny-camel-full-msg-receive-strategy.c
r2896 r3104 93 93 nheader = _tny_camel_msg_header_new (CAMEL_MIME_MESSAGE (camel_message), 94 94 folder, tny_header_get_date_received (header)); 95 _tny_camel_msg_header_set_decorated (TNY_CAMEL_MSG_HEADER (nheader), header );95 _tny_camel_msg_header_set_decorated (TNY_CAMEL_MSG_HEADER (nheader), header, FALSE); 96 96 97 97 message = tny_camel_msg_new (); trunk/libtinymail-camel/tny-camel-msg-header-priv.h
r3076 r3104 55 55 gboolean partial; 56 56 TnyHeader *decorated; 57 gboolean decorated_has_ref; 57 58 }; 58 59 … … 65 66 TnyHeader* _tny_camel_msg_header_new (CamelMimeMessage *msg, TnyFolder *folder, time_t received); 66 67 67 void _tny_camel_msg_header_set_decorated (TnyCamelMsgHeader *header, TnyHeader *decorated );68 void _tny_camel_msg_header_set_decorated (TnyCamelMsgHeader *header, TnyHeader *decorated, gboolean add_reference); 68 69 69 70 G_END_DECLS trunk/libtinymail-camel/tny-camel-msg-header.c
r3096 r3104 465 465 TnyCamelMsgHeader *me = (TnyCamelMsgHeader *) user_data; 466 466 me->decorated = NULL; 467 me->decorated_has_ref = FALSE; 467 468 } 468 469 … … 489 490 490 491 if (me->decorated) { 491 g_object_weak_unref (G_OBJECT (me->decorated), notify_decorated_del, me); 492 if (me->decorated_has_ref) 493 g_object_unref (me->decorated); 494 else 495 g_object_weak_unref (G_OBJECT (me->decorated), notify_decorated_del, me); 492 496 me->decorated = NULL; 493 497 } … … 528 532 self->partial = FALSE; 529 533 self->decorated = NULL; 534 self->decorated_has_ref = FALSE; 530 535 self->to = NULL; 531 536 self->from = NULL; … … 541 546 void 542 547 _tny_camel_msg_header_set_decorated (TnyCamelMsgHeader *header, 543 TnyHeader *decorated) 548 TnyHeader *decorated, 549 gboolean add_reference) 544 550 { 545 551 g_assert (TNY_IS_HEADER (decorated)); 546 552 if (header->decorated) { 547 g_object_weak_unref (G_OBJECT (decorated), notify_decorated_del, header); 548 } 549 550 g_object_weak_ref (G_OBJECT (decorated), notify_decorated_del, header); 553 if (header->decorated_has_ref) 554 g_object_unref (header->decorated); 555 else 556 g_object_weak_unref (G_OBJECT (header->decorated), notify_decorated_del, header); 557 } 558 header->decorated_has_ref = add_reference; 559 560 if (add_reference) 561 g_object_ref (decorated); 562 else 563 g_object_weak_ref (G_OBJECT (decorated), notify_decorated_del, header); 551 564 552 565 header->decorated = decorated; trunk/libtinymail-camel/tny-camel-partial-msg-receive-strategy.c
r2896 r3104 94 94 nheader = _tny_camel_msg_header_new (CAMEL_MIME_MESSAGE (camel_message), folder, 95 95 tny_header_get_date_received (header)); 96 _tny_camel_msg_header_set_decorated (TNY_CAMEL_MSG_HEADER (nheader), header );96 _tny_camel_msg_header_set_decorated (TNY_CAMEL_MSG_HEADER (nheader), header, FALSE); 97 97 message = tny_camel_msg_new (); 98 98 _tny_camel_msg_set_received (TNY_CAMEL_MSG (message), trunk/libtinymail/tny-merge-folder.c
r3100 r3104 52 52 { 53 53 TnyMergeFolderPriv *priv = TNY_MERGE_FOLDER_GET_PRIVATE (self); 54 TnyIterator *iter;55 54 GList *list, *list_iter; 56 55 … … 1016 1015 tny_merge_folder_transfer_msgs (TnyFolder *self, TnyList *header_list, TnyFolder *folder_dst, gboolean delete_originals, GError **err) 1017 1016 { 1018 TnyMergeFolderPriv *priv = TNY_MERGE_FOLDER_GET_PRIVATE (self);1019 1017 TnyIterator *iter; 1020 1018 … … 1101 1099 { 1102 1100 TransferMsgsInfo *info = thr_user_data; 1103 TnyFolder *self = info->self;1104 TnyMergeFolderPriv *priv = TNY_MERGE_FOLDER_GET_PRIVATE (self);1105 1101 1106 1102 tny_merge_folder_transfer_msgs (info->self, info->header_list, info->folder_dst, info->delete_originals, &info->err);
