From e6ad0f05a4b5ad02a94512eb4f19934c6541425c Mon Sep 17 00:00:00 2001 From: Arkadiy Illarionov Date: Sun, 14 Apr 2024 01:32:33 +0300 Subject: [PATCH] Deduplicate PanCacheData destroying --- src/pan-view/pan-item.cc | 20 +++++++++++++++++--- src/pan-view/pan-item.h | 3 +++ src/pan-view/pan-view.cc | 8 +------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/pan-view/pan-item.cc b/src/pan-view/pan-item.cc index e81fad7e..0b8d5913 100644 --- a/src/pan-view/pan-item.cc +++ b/src/pan-view/pan-item.cc @@ -640,9 +640,7 @@ static void pan_item_image_find_size(PanWindow *pw, PanItem *pi, gint w, gint h) pi->height = MAX(1, pc->cd->height * pw->image_size / 100); pw->cache_list = g_list_remove(pw->cache_list, pc); - cache_sim_data_free(pc->cd); - file_data_unref(pc->fd); - g_free(pc); + pan_cache_data_free(pc); return; } } @@ -989,4 +987,20 @@ void pan_text_alignment_calc(PanTextAlignment *ta, PanItem *box) y += height; } } + + +/* + *----------------------------------------------------------------------------- + * cache data + *----------------------------------------------------------------------------- + */ + +void pan_cache_data_free(PanCacheData *pc) +{ + if (!pc) return; + + cache_sim_data_free(pc->cd); + file_data_unref(pc->fd); + g_free(pc); +} /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ diff --git a/src/pan-view/pan-item.h b/src/pan-view/pan-item.h index a992e21a..ec43470f 100644 --- a/src/pan-view/pan-item.h +++ b/src/pan-view/pan-item.h @@ -98,4 +98,7 @@ void pan_text_alignment_free(PanTextAlignment *ta); PanItem *pan_text_alignment_add(PanTextAlignment *ta, const gchar *label, const gchar *text); void pan_text_alignment_calc(PanTextAlignment *ta, PanItem *box); +// Cache data +void pan_cache_data_free(PanCacheData *pc); + #endif diff --git a/src/pan-view/pan-view.cc b/src/pan-view/pan-view.cc index 82118ad4..1bcc7f34 100644 --- a/src/pan-view/pan-view.cc +++ b/src/pan-view/pan-view.cc @@ -618,13 +618,7 @@ GList *pan_cache_sort(GList *list, SortType method, gboolean ascend, gboolean ca static void pan_cache_free(PanWindow *pw) { - g_list_free_full(pw->cache_list, [](gpointer data) - { - auto pc = static_cast(data); - cache_sim_data_free(pc->cd); - file_data_unref(pc->fd); - g_free(pc); - }); + g_list_free_full(pw->cache_list, reinterpret_cast(pan_cache_data_free)); pw->cache_list = nullptr; filelist_free(pw->cache_todo); -- 2.20.1