From fc08bea8d2d2964cd73938cc7116854daedbc9b7 Mon Sep 17 00:00:00 2001 From: Neo Xu Date: Wed, 3 Jan 2024 16:56:15 +0800 Subject: [PATCH] fix(decoder): do not put image to cache if args say no (#5111) Signed-off-by: Xuxingliang --- src/draw/vg_lite/lv_vg_lite_decoder.c | 11 ++++++----- src/libs/bin_decoder/lv_bin_decoder.c | 2 +- src/libs/libjpeg_turbo/lv_libjpeg_turbo.c | 11 ++++++----- src/libs/libpng/lv_libpng.c | 11 ++++++----- src/libs/lodepng/lv_lodepng.c | 11 ++++++----- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/draw/vg_lite/lv_vg_lite_decoder.c b/src/draw/vg_lite/lv_vg_lite_decoder.c index e79d29078..f25e1ec7d 100644 --- a/src/draw/vg_lite/lv_vg_lite_decoder.c +++ b/src/draw/vg_lite/lv_vg_lite_decoder.c @@ -386,6 +386,8 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d break; } + if(dsc->args.no_cache) return LV_RES_OK; + #if LV_CACHE_DEF_SIZE > 0 if(res == LV_RESULT_OK) { lv_image_cache_data_t search_key; @@ -421,11 +423,10 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ -#if LV_CACHE_DEF_SIZE > 0 - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); -#else - decoder_draw_buf_free((lv_draw_buf_t *)dsc->decoded); -#endif + if(dsc->args.no_cache || LV_CACHE_DEF_SIZE == 0) + lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); + else + lv_cache_release(dsc->cache, dsc->cache_entry, NULL); } static void decoder_cache_free(lv_image_cache_data_t * cached_data, void * user_data) diff --git a/src/libs/bin_decoder/lv_bin_decoder.c b/src/libs/bin_decoder/lv_bin_decoder.c index e8ba02be5..787634ccd 100644 --- a/src/libs/bin_decoder/lv_bin_decoder.c +++ b/src/libs/bin_decoder/lv_bin_decoder.c @@ -302,7 +302,7 @@ lv_result_t lv_bin_decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d } dsc->decoded = adjusted; - if(use_directly) return LV_RESULT_OK; /*Do not put image to cache if it can be used directly.*/ + if(use_directly || dsc->args.no_cache) return LV_RESULT_OK; /*Do not put image to cache if it can be used directly.*/ #if LV_CACHE_DEF_SIZE > 0 diff --git a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c index 2c9f8f95b..e5a7de391 100644 --- a/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c +++ b/src/libs/libjpeg_turbo/lv_libjpeg_turbo.c @@ -162,6 +162,8 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d dsc->decoded = decoded; + if(dsc->args.no_cache) return LV_RES_OK; + #if LV_CACHE_DEF_SIZE > 0 lv_image_cache_data_t search_key; search_key.src_type = dsc->src_type; @@ -189,11 +191,10 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ -#if LV_CACHE_DEF_SIZE > 0 - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); -#else - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); -#endif + if(dsc->args.no_cache || LV_CACHE_DEF_SIZE == 0) + lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); + else + lv_cache_release(dsc->cache, dsc->cache_entry, NULL); } static uint8_t * alloc_file(const char * filename, uint32_t * size) diff --git a/src/libs/libpng/lv_libpng.c b/src/libs/libpng/lv_libpng.c index 8389d09dd..b35473582 100644 --- a/src/libs/libpng/lv_libpng.c +++ b/src/libs/libpng/lv_libpng.c @@ -153,6 +153,8 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d dsc->decoded = decoded; + if(dsc->args.no_cache) return LV_RES_OK; + #if LV_CACHE_DEF_SIZE > 0 lv_image_cache_data_t search_key; search_key.src_type = dsc->src_type; @@ -180,11 +182,10 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); /*Unused*/ -#if LV_CACHE_DEF_SIZE > 0 - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); -#else - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); -#endif + if(dsc->args.no_cache || LV_CACHE_DEF_SIZE == 0) + lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); + else + lv_cache_release(dsc->cache, dsc->cache_entry, NULL); } 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 93cab2f18..0a058ae88 100644 --- a/src/libs/lodepng/lv_lodepng.c +++ b/src/libs/lodepng/lv_lodepng.c @@ -212,6 +212,8 @@ static lv_result_t decoder_open(lv_image_decoder_t * decoder, lv_image_decoder_d dsc->decoded = decoded; + if(dsc->args.no_cache) return LV_RES_OK; + #if LV_CACHE_DEF_SIZE > 0 lv_image_cache_data_t search_key; search_key.src_type = dsc->src_type; @@ -239,11 +241,10 @@ static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * { LV_UNUSED(decoder); -#if LV_CACHE_DEF_SIZE > 0 - lv_cache_release(dsc->cache, dsc->cache_entry, NULL); -#else - lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); -#endif + if(dsc->args.no_cache || LV_CACHE_DEF_SIZE == 0) + lv_draw_buf_destroy((lv_draw_buf_t *)dsc->decoded); + else + lv_cache_release(dsc->cache, dsc->cache_entry, NULL); } static lv_draw_buf_t * decode_png_data(const void * png_data, size_t png_data_size)