talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit c27905f5dc36acedbbf022d26ed52719c9289241
parent e725cc0f9d8fc64f896977c786b016b56d15d087
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Tue, 13 Nov 2018 23:31:37 +0100

Further optimize .deleted file reading in RSSyl.

When updating a feed, only read the file once at the
beginning, instead of reading and rereading it for
every parsed feed item.

Diffstat:
Msrc/plugins/rssyl/rssyl_deleted.c | 10+++++-----
Msrc/plugins/rssyl/rssyl_parse_feed.c | 7-------
Msrc/plugins/rssyl/rssyl_update_feed.c | 3++-
3 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/src/plugins/rssyl/rssyl_deleted.c b/src/plugins/rssyl/rssyl_deleted.c @@ -286,13 +286,13 @@ gboolean rssyl_deleted_check(RFolderItem *ritem, FeedItem *fitem) cm_return_val_if_fail(fitem != NULL, FALSE); debug_print("RSSyl: (DELETED) check\n"); - rssyl_deleted_update(ritem); + + if (ritem->deleted_items == NULL) + return FALSE; + if (g_slist_find_custom(ritem->deleted_items, (gconstpointer)fitem, - _rssyl_deleted_check_func) != NULL) { - rssyl_deleted_free(ritem); + _rssyl_deleted_check_func) != NULL) return TRUE; - } - rssyl_deleted_free(ritem); return FALSE; } diff --git a/src/plugins/rssyl/rssyl_parse_feed.c b/src/plugins/rssyl/rssyl_parse_feed.c @@ -209,10 +209,6 @@ gboolean rssyl_parse_feed(RFolderItem *ritem, Feed *feed) return TRUE; } - /* Populate the ->deleted_items list so that we can check it when - * adding each item. */ - rssyl_deleted_update(ritem); - /* Parse each item in the feed, adding or updating existing items if * necessary */ if( feed_n_items(feed) > 0 ) @@ -223,9 +219,6 @@ gboolean rssyl_parse_feed(RFolderItem *ritem, Feed *feed) rssyl_expire_items(ritem, feed); } - /* Clean up ->deleted_items */ - rssyl_deleted_free(ritem); - folder_item_scan(&ritem->item); folder_item_update_thaw(); diff --git a/src/plugins/rssyl/rssyl_update_feed.c b/src/plugins/rssyl/rssyl_update_feed.c @@ -259,6 +259,8 @@ gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose) return ctx->success; } + rssyl_deleted_update(ritem); + debug_print("RSSyl: STARTING TO PARSE FEED\n"); if( ctx->success && !(ctx->success = rssyl_parse_feed(ritem, ctx->feed)) ) { /* both libcurl and libfeed were happy, but we weren't */ @@ -291,7 +293,6 @@ gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose) /* Prune our deleted items list of items which are no longer in * upstream feed. */ - rssyl_deleted_update(ritem); rssyl_deleted_expire(ritem, ctx->feed); rssyl_deleted_store(ritem); rssyl_deleted_free(ritem);