From 893dfb14c90c0f3de1c3c81a327ec599280097a7 Mon Sep 17 00:00:00 2001 From: Benign X <1341398182@qq.com> Date: Thu, 16 May 2024 18:11:37 +0800 Subject: [PATCH] refactor(image_decoder): extract cache operation to image decoder from decoder instance (#6155) --- src/draw/lv_image_decoder.c | 5 +++++ src/draw/vg_lite/lv_vg_lite_decoder.c | 5 +---- src/libs/bin_decoder/lv_bin_decoder.c | 6 ------ src/libs/libjpeg_turbo/lv_libjpeg_turbo.c | 5 +---- src/libs/libpng/lv_libpng.c | 5 +---- src/libs/lodepng/lv_lodepng.c | 5 +---- 6 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/draw/lv_image_decoder.c b/src/draw/lv_image_decoder.c index cf62e7baf..eebc3f73c 100644 --- a/src/draw/lv_image_decoder.c +++ b/src/draw/lv_image_decoder.c @@ -151,6 +151,11 @@ void lv_image_decoder_close(lv_image_decoder_dsc_t * dsc) { if(dsc->decoder) { if(dsc->decoder->close_cb) dsc->decoder->close_cb(dsc->decoder, dsc); + + if(lv_image_cache_is_enabled() && dsc->cache && dsc->cache_entry) { + /*Decoded data is in cache, release it from cache's callback*/ + lv_cache_release(dsc->cache, dsc->cache_entry, NULL); + } } } diff --git a/src/draw/vg_lite/lv_vg_lite_decoder.c b/src/draw/vg_lite/lv_vg_lite_decoder.c index f2084161e..d7aa37aaf 100644 --- a/src/draw/vg_lite/lv_vg_lite_decoder.c +++ b/src/draw/vg_lite/lv_vg_lite_decoder.c @@ -417,10 +417,7 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ - if(dsc->args.no_cache || !lv_image_cache_is_enabled()) - decoder_draw_buf_free((lv_draw_buf_t *)dsc->decoded); - else - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); + if(dsc->args.no_cache || !lv_image_cache_is_enabled()) decoder_draw_buf_free((lv_draw_buf_t *)dsc->decoded); if(decoder->user_data) free(decoder->user_data); } diff --git a/src/libs/bin_decoder/lv_bin_decoder.c b/src/libs/bin_decoder/lv_bin_decoder.c index acbf1fe84..96a0f4565 100644 --- a/src/libs/bin_decoder/lv_bin_decoder.c +++ b/src/libs/bin_decoder/lv_bin_decoder.c @@ -365,12 +365,6 @@ void lv_bin_decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * } free_decoder_data(dsc); - - if(dsc->cache && dsc->cache_entry) { - /*Decoded data is in cache, release it from cache's callback*/ - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); - } - } lv_result_t lv_bin_decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc, diff --git a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c index dfb785be9..ec6584062 100644 --- a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c +++ b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c @@ -209,10 +209,7 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ - if(dsc->args.no_cache || !lv_image_cache_is_enabled()) - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); - else - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); + if(dsc->args.no_cache || !lv_image_cache_is_enabled()) lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); } static uint8_t * read_file(const char * filename, uint32_t * size) diff --git a/src/libs/libpng/lv_libpng.c b/src/libs/libpng/lv_libpng.c index a86b6dac4..76812fd85 100644 --- a/src/libs/libpng/lv_libpng.c +++ b/src/libs/libpng/lv_libpng.c @@ -183,10 +183,7 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ - if(dsc->args.no_cache || !lv_image_cache_is_enabled()) - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); - else - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); + if(dsc->args.no_cache || !lv_image_cache_is_enabled()) lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); } static uint8_t * alloc_file(const char * filename, uint32_t * size) diff --git a/src/libs/lodepng/lv_lodepng.c b/src/libs/lodepng/lv_lodepng.c index b2ed520b5..5dcd99873 100644 --- a/src/libs/lodepng/lv_lodepng.c +++ b/src/libs/lodepng/lv_lodepng.c @@ -234,10 +234,7 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); - if(dsc->args.no_cache || !lv_image_cache_is_enabled()) - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); - else - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); + if(dsc->args.no_cache || !lv_image_cache_is_enabled()) lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); } static lv_draw_buf_t * decode_png_data(const void * png_data, size_t png_data_size)