From 453235c2452167dda380c6c1682ebe208f0599bb Mon Sep 17 00:00:00 2001 From: PGNetHun Date: Mon, 25 Sep 2023 17:16:22 +0200 Subject: [PATCH] chore: code and configs cleanups; add builtin cache tracing (#4593) --- .devcontainer/__lv_conf.h__ | 5 +- env_support/cmsis-pack/lv_conf_cmsis.h | 5 +- lv_conf_template.h | 5 +- src/draw/lv_image_decoder.c | 8 +-- src/lv_conf_internal.h | 35 ++++++---- src/misc/lv_anim.c | 8 +-- src/misc/lv_cache_builtin.c | 64 +++++++++---------- src/others/msg/lv_msg.c | 6 +- .../micropython/lv_mem_core_micropython.c | 1 + src/widgets/buttonmatrix/lv_buttonmatrix.c | 24 +++---- 10 files changed, 86 insertions(+), 75 deletions(-) diff --git a/.devcontainer/__lv_conf.h__ b/.devcontainer/__lv_conf.h__ index 2ebdde6f6..80cb923fb 100755 --- a/.devcontainer/__lv_conf.h__ +++ b/.devcontainer/__lv_conf.h__ @@ -253,7 +253,8 @@ #define LV_LOG_TRACE_OBJ_CREATE 1 #define LV_LOG_TRACE_LAYOUT 1 #define LV_LOG_TRACE_ANIM 1 - #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_CACHE 1 #endif /*LV_USE_LOG*/ @@ -499,8 +500,6 @@ #define LV_USE_CHECKBOX 1 -#define LV_USE_COLORWHEEL 1 - #define LV_USE_DROPDOWN 1 /*Requires: lv_label*/ #define LV_USE_IMG 1 /*Requires: lv_label*/ diff --git a/env_support/cmsis-pack/lv_conf_cmsis.h b/env_support/cmsis-pack/lv_conf_cmsis.h index be0da63af..a8b8c544a 100644 --- a/env_support/cmsis-pack/lv_conf_cmsis.h +++ b/env_support/cmsis-pack/lv_conf_cmsis.h @@ -230,7 +230,8 @@ #define LV_LOG_TRACE_OBJ_CREATE 1 #define LV_LOG_TRACE_LAYOUT 1 #define LV_LOG_TRACE_ANIM 1 - #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_CACHE 1 #endif /*LV_USE_LOG*/ @@ -481,8 +482,6 @@ #define LV_USE_CHECKBOX 1 -#define LV_USE_COLORWHEEL 1 - #define LV_USE_DROPDOWN 1 /*Requires: lv_label*/ #define LV_USE_IMG 1 /*Requires: lv_label*/ diff --git a/lv_conf_template.h b/lv_conf_template.h index f8428c6d4..8365fbd45 100644 --- a/lv_conf_template.h +++ b/lv_conf_template.h @@ -177,7 +177,8 @@ #define LV_LOG_TRACE_OBJ_CREATE 1 #define LV_LOG_TRACE_LAYOUT 1 #define LV_LOG_TRACE_ANIM 1 - #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_MSG 1 + #define LV_LOG_TRACE_CACHE 1 #endif /*LV_USE_LOG*/ @@ -738,7 +739,7 @@ #define LV_SDL_RENDER_MODE LV_DISPLAY_RENDER_MODE_DIRECT /*LV_DISPLAY_RENDER_MODE_DIRECT is recommended for best performance*/ #define LV_SDL_BUF_COUNT 1 /*1 or 2*/ #define LV_SDL_FULLSCREEN 0 /*1: Make the window full screen by default*/ - #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL widows are closed*/ + #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL windows are closed*/ #endif /*Driver for /dev/fb*/ diff --git a/src/draw/lv_image_decoder.c b/src/draw/lv_image_decoder.c index b2a9529b0..7db0ed093 100644 --- a/src/draw/lv_image_decoder.c +++ b/src/draw/lv_image_decoder.c @@ -94,10 +94,10 @@ lv_result_t lv_image_decoder_get_info(const void * src, lv_image_header_t * head } lv_result_t res = LV_RESULT_INVALID; - lv_image_decoder_t * d; - _LV_LL_READ(img_decoder_ll_p, d) { - if(d->info_cb) { - res = d->info_cb(d, src, header); + lv_image_decoder_t * decoder; + _LV_LL_READ(img_decoder_ll_p, decoder) { + if(decoder->info_cb) { + res = decoder->info_cb(decoder, src, header); if(res == LV_RESULT_OK) { if(header->stride == 0) header->stride = img_width_to_stride(header); break; diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index bb51b4496..0abde6da4 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -489,17 +489,28 @@ #define LV_LOG_TRACE_ANIM 1 #endif #endif - #ifndef LV_LOG_TRACE_MSG - #ifdef _LV_KCONFIG_PRESENT - #ifdef CONFIG_LV_LOG_TRACE_MSG - #define LV_LOG_TRACE_MSG CONFIG_LV_LOG_TRACE_MSG - #else - #define LV_LOG_TRACE_MSG 0 - #endif - #else - #define LV_LOG_TRACE_MSG 1 - #endif - #endif + #ifndef LV_LOG_TRACE_MSG + #ifdef _LV_KCONFIG_PRESENT + #ifdef CONFIG_LV_LOG_TRACE_MSG + #define LV_LOG_TRACE_MSG CONFIG_LV_LOG_TRACE_MSG + #else + #define LV_LOG_TRACE_MSG 0 + #endif + #else + #define LV_LOG_TRACE_MSG 1 + #endif + #endif + #ifndef LV_LOG_TRACE_CACHE + #ifdef _LV_KCONFIG_PRESENT + #ifdef CONFIG_LV_LOG_TRACE_CACHE + #define LV_LOG_TRACE_CACHE CONFIG_LV_LOG_TRACE_CACHE + #else + #define LV_LOG_TRACE_CACHE 0 + #endif + #else + #define LV_LOG_TRACE_CACHE 1 + #endif + #endif #endif /*LV_USE_LOG*/ @@ -2414,7 +2425,7 @@ #define LV_SDL_DIRECT_EXIT 0 #endif #else - #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL widows are closed*/ + #define LV_SDL_DIRECT_EXIT 1 /*1: Exit the application when all SDL windows are closed*/ #endif #endif #endif diff --git a/src/misc/lv_anim.c b/src/misc/lv_anim.c index 111778ab6..a96d2a148 100644 --- a/src/misc/lv_anim.c +++ b/src/misc/lv_anim.c @@ -45,9 +45,9 @@ static int32_t lv_anim_path_cubic_bezier(const lv_anim_t * a, int32_t x1, * MACROS **********************/ #if LV_LOG_TRACE_ANIM - #define TRACE_ANIM(...) LV_LOG_TRACE(__VA_ARGS__) + #define LV_TRACE_ANIM(...) LV_LOG_TRACE(__VA_ARGS__) #else - #define TRACE_ANIM(...) + #define LV_TRACE_ANIM(...) #endif @@ -77,7 +77,7 @@ void lv_anim_init(lv_anim_t * a) lv_anim_t * lv_anim_start(const lv_anim_t * a) { - TRACE_ANIM("begin"); + LV_TRACE_ANIM("begin"); /*Do not let two animations for the same 'var' with the same 'exec_cb'*/ if(a->exec_cb != NULL) lv_anim_del(a->var, a->exec_cb); /*exec_cb == NULL would delete all animations of var*/ @@ -108,7 +108,7 @@ lv_anim_t * lv_anim_start(const lv_anim_t * a) *It's important if it happens in a ready callback. (see `anim_timer`)*/ anim_mark_list_change(); - TRACE_ANIM("finished"); + LV_TRACE_ANIM("finished"); return new_anim; } diff --git a/src/misc/lv_cache_builtin.c b/src/misc/lv_cache_builtin.c index bd69e8a41..da992e32c 100644 --- a/src/misc/lv_cache_builtin.c +++ b/src/misc/lv_cache_builtin.c @@ -25,14 +25,13 @@ /********************** * STATIC PROTOTYPES **********************/ - static lv_cache_entry_t * add_cb(size_t size); static lv_cache_entry_t * find_cb(const void * src, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2); static void invalidate_cb(lv_cache_entry_t * entry); static const void * get_data_cb(lv_cache_entry_t * entry); static void release_cb(lv_cache_entry_t * entry); static void set_max_size_cb(size_t new_size); -static bool drop_yougest(void); +static bool drop_youngest(void); /********************** * STATIC VARIABLES @@ -41,6 +40,11 @@ static bool drop_yougest(void); /********************** * MACROS **********************/ +#if LV_LOG_TRACE_CACHE + #define LV_TRACE_CACHE(...) LV_LOG_TRACE(__VA_ARGS__) +#else + #define LV_TRACE_CACHE(...) +#endif /********************** * GLOBAL FUNCTIONS @@ -59,7 +63,6 @@ void _lv_cache_builtin_init(void) _lv_ll_init(&dsc.entry_ll, sizeof(lv_cache_entry_t)); } - /********************** * STATIC FUNCTIONS **********************/ @@ -73,7 +76,7 @@ static lv_cache_entry_t * add_cb(size_t size) if(!temporary) { /*Keep dropping items until there is enough space*/ while(dsc.cur_size + size > _cache_manager.max_size) { - bool ret = drop_yougest(); + bool ret = drop_youngest(); /*No item could be dropped. *It can happen because the usage_count of the remaining items are not zero.*/ @@ -82,37 +85,36 @@ static lv_cache_entry_t * add_cb(size_t size) break; } } - } - lv_cache_entry_t * e = _lv_ll_ins_head(&dsc.entry_ll); - lv_memzero(e, sizeof(lv_cache_entry_t)); - e->data_size = size; - e->weight = 1; - e->temporary = temporary; + lv_cache_entry_t * entry = _lv_ll_ins_head(&dsc.entry_ll); + lv_memzero(entry, sizeof(lv_cache_entry_t)); + entry->data_size = size; + entry->weight = 1; + entry->temporary = temporary; if(temporary) { - LV_LOG_USER("cache add temporary: %"LV_PRIu32, (uint32_t)size); + LV_TRACE_CACHE("Add temporary cache: %lu bytes", (unsigned long)size); } else { - LV_LOG_USER("cache add: %"LV_PRIu32, (uint32_t)size); + LV_TRACE_CACHE("Add cache: %lu bytes", (unsigned long)size); dsc.cur_size += size; } - return e; + return entry; } static lv_cache_entry_t * find_cb(const void * src, lv_cache_src_type_t src_type, uint32_t param1, uint32_t param2) { - lv_cache_entry_t * e = _lv_ll_get_head(&dsc.entry_ll); - while(e) { - if(param1 == e->param1 && param2 == e->param2 && src_type == e->src_type && - ((src_type == LV_CACHE_SRC_TYPE_PTR && src == e->src) || - (src_type == LV_CACHE_SRC_TYPE_STR && strcmp(src, e->src) == 0))) { - return e; + lv_cache_entry_t * entry = _lv_ll_get_head(&dsc.entry_ll); + while(entry) { + if(param1 == entry->param1 && param2 == entry->param2 && src_type == entry->src_type && + ((src_type == LV_CACHE_SRC_TYPE_PTR && src == entry->src) || + (src_type == LV_CACHE_SRC_TYPE_STR && strcmp(src, entry->src) == 0))) { + return entry; } - e = _lv_ll_get_next(&dsc.entry_ll, e); + entry = _lv_ll_get_next(&dsc.entry_ll, entry); } return NULL; @@ -123,7 +125,7 @@ static void invalidate_cb(lv_cache_entry_t * entry) if(entry == NULL) return; dsc.cur_size -= entry->data_size; - LV_LOG_USER("cache drop %"LV_PRIu32, (uint32_t)entry->data_size); + LV_TRACE_CACHE("Drop cache: %lu bytes", (unsigned long)entry->data_size); if(entry->free_src) lv_free((void *)entry->src); if(entry->free_data) lv_draw_buf_free((void *)entry->data); @@ -164,7 +166,7 @@ static void release_cb(lv_cache_entry_t * entry) static void set_max_size_cb(size_t new_size) { while(dsc.cur_size > new_size) { - bool ret = drop_yougest(); + bool ret = drop_youngest(); /*No item could be dropped. *It can happen because the usage_count of the remaining items are not zero.*/ @@ -172,23 +174,21 @@ static void set_max_size_cb(size_t new_size) } } -static bool drop_yougest(void) +static bool drop_youngest(void) { - int32_t life_min = INT32_MAX; - lv_cache_entry_t * e_min = NULL; + lv_cache_entry_t * entry_to_drop = NULL; - lv_cache_entry_t * e = _lv_ll_get_head(&dsc.entry_ll); - while(e) { - if(e->life < life_min && e->usage_count == 0) e_min = e; - e = _lv_ll_get_next(&dsc.entry_ll, e); + lv_cache_entry_t * entry = _lv_ll_get_head(&dsc.entry_ll); + while(entry) { + if(entry->life < life_min && entry->usage_count == 0) entry_to_drop = entry; + entry = _lv_ll_get_next(&dsc.entry_ll, entry); } - if(e_min == NULL) { + if(entry_to_drop == NULL) { return false; } - invalidate_cb(e_min); + invalidate_cb(entry_to_drop); return true; - } diff --git a/src/others/msg/lv_msg.c b/src/others/msg/lv_msg.c index f8ff58983..7c56464dd 100644 --- a/src/others/msg/lv_msg.c +++ b/src/others/msg/lv_msg.c @@ -53,9 +53,9 @@ static void obj_delete_event_cb(lv_event_t * e); * MACROS **********************/ #if LV_LOG_TRACE_MSG - #define MSG_TRACE(...) LV_LOG_TRACE(__VA_ARGS__) + #define LV_TRACE_MSG(...) LV_LOG_TRACE(__VA_ARGS__) #else - #define MSG_TRACE(...) + #define LV_TRACE_MSG(...) #endif /********************** @@ -194,7 +194,7 @@ static void notify(lv_msg_t * m) /*restart or load next*/ if(restart_notify) { - MSG_TRACE("Start from the first sub_dsc_t again because _subs_ll may have changed"); + LV_TRACE_MSG("Start from the first sub_dsc_t again because _subs_ll may have changed"); break; } s = next; diff --git a/src/stdlib/micropython/lv_mem_core_micropython.c b/src/stdlib/micropython/lv_mem_core_micropython.c index f2add336c..03b396013 100644 --- a/src/stdlib/micropython/lv_mem_core_micropython.c +++ b/src/stdlib/micropython/lv_mem_core_micropython.c @@ -29,6 +29,7 @@ /********************** * MACROS **********************/ + /********************** * GLOBAL FUNCTIONS **********************/ diff --git a/src/widgets/buttonmatrix/lv_buttonmatrix.c b/src/widgets/buttonmatrix/lv_buttonmatrix.c index eb3885ae8..00e99b23b 100644 --- a/src/widgets/buttonmatrix/lv_buttonmatrix.c +++ b/src/widgets/buttonmatrix/lv_buttonmatrix.c @@ -212,7 +212,7 @@ void lv_buttonmatrix_set_button_ctrl(lv_obj_t * obj, uint32_t btn_id, lv_buttonm { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; if(btn_id >= btnm->btn_cnt) return; @@ -232,7 +232,7 @@ void lv_buttonmatrix_clear_button_ctrl(lv_obj_t * obj, uint32_t btn_id, lv_butto { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; if(btn_id >= btnm->btn_cnt) return; @@ -248,7 +248,7 @@ void lv_buttonmatrix_set_button_ctrl_all(lv_obj_t * obj, lv_buttonmatrix_ctrl_t { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; uint32_t i; for(i = 0; i < btnm->btn_cnt; i++) { lv_buttonmatrix_set_button_ctrl(obj, i, ctrl); @@ -259,7 +259,7 @@ void lv_buttonmatrix_clear_button_ctrl_all(lv_obj_t * obj, lv_buttonmatrix_ctrl_ { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; uint32_t i; for(i = 0; i < btnm->btn_cnt; i++) { lv_buttonmatrix_clear_button_ctrl(obj, i, ctrl); @@ -270,7 +270,7 @@ void lv_buttonmatrix_set_button_width(lv_obj_t * obj, uint32_t btn_id, uint32_t { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; if(btn_id >= btnm->btn_cnt) return; btnm->ctrl_bits[btn_id] &= (~LV_BUTTONMATRIX_WIDTH_MASK); btnm->ctrl_bits[btn_id] |= (LV_BUTTONMATRIX_WIDTH_MASK & width); @@ -282,7 +282,7 @@ void lv_buttonmatrix_set_one_checked(lv_obj_t * obj, bool en) { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; btnm->one_check = en; /*If more than one button is toggled only the first one should be*/ @@ -297,7 +297,7 @@ const char ** lv_buttonmatrix_get_map(const lv_obj_t * obj) { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; return btnm->map_p; } @@ -305,7 +305,7 @@ uint32_t lv_buttonmatrix_get_selected_button(const lv_obj_t * obj) { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; return btnm->btn_id_sel; } @@ -338,7 +338,7 @@ bool lv_buttonmatrix_has_button_ctrl(lv_obj_t * obj, uint32_t btn_id, lv_buttonm { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; if(btn_id >= btnm->btn_cnt) return false; return (btnm->ctrl_bits[btn_id] & ctrl) == ctrl; @@ -348,7 +348,7 @@ bool lv_buttonmatrix_get_one_checked(const lv_obj_t * obj) { LV_ASSERT_OBJ(obj, MY_CLASS); - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; return btnm->one_check; } @@ -921,7 +921,7 @@ static uint32_t get_button_from_point(lv_obj_t * obj, lv_point_t * p) { lv_area_t obj_cords; lv_area_t btn_area; - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; uint32_t i; lv_obj_get_coords(obj, &obj_cords); @@ -977,7 +977,7 @@ static void invalidate_button_area(const lv_obj_t * obj, uint32_t btn_idx) lv_area_t btn_area; lv_area_t obj_area; - lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj;; + lv_buttonmatrix_t * btnm = (lv_buttonmatrix_t *)obj; if(btn_idx >= btnm->btn_cnt) return; lv_area_copy(&btn_area, &btnm->button_areas[btn_idx]);