From c27905f5dc36acedbbf022d26ed52719c9289241 Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Tue, 13 Nov 2018 23:31:37 +0100 Subject: [PATCH] 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. --- src/plugins/rssyl/rssyl_deleted.c | 10 +++++----- src/plugins/rssyl/rssyl_parse_feed.c | 7 ------- src/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 index 23fac15e2..a26436527 100644 --- 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 index 616e79810..b7a49ddc7 100644 --- 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 index 2e6645d0a..e0ad11509 100644 --- 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); -- 2.25.1