From 403351222e2f2633ce89e112cb79be39338f195c Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 1 Mar 2021 12:00:13 +0100 Subject: [PATCH] add logs + minor fixes --- src/lv_core/lv_indev.c | 29 +++++++++++++++++++++++++---- src/lv_core/lv_obj.c | 25 ++++++++++++++++++------- src/lv_core/lv_obj.h | 6 ++++++ src/lv_core/lv_obj_class.c | 4 ++-- src/lv_core/lv_obj_pos.c | 10 +++++----- src/lv_core/lv_obj_tree.c | 10 ++++++++++ src/lv_core/lv_refr.c | 13 +++++++++---- 7 files changed, 75 insertions(+), 22 deletions(-) diff --git a/src/lv_core/lv_indev.c b/src/lv_core/lv_indev.c index aeb8a1d70..fdb90e77d 100644 --- a/src/lv_core/lv_indev.c +++ b/src/lv_core/lv_indev.c @@ -20,7 +20,6 @@ /********************* * DEFINES *********************/ - #if LV_INDEV_DEF_SCROLL_THROW <= 0 #warning "LV_INDEV_DRAG_THROW must be greater than 0" #endif @@ -52,6 +51,11 @@ static lv_obj_t * indev_obj_act = NULL; /********************** * MACROS **********************/ +#if LV_LOG_TRACE_INDEV +# define INDEV_TRACE(...) LV_LOG_TRACE( __VA_ARGS__) +#else +# define INDEV_TRACE(...) +#endif /********************** * GLOBAL FUNCTIONS @@ -59,7 +63,7 @@ static lv_obj_t * indev_obj_act = NULL; void lv_indev_read_task_cb(lv_timer_t * task) { - LV_LOG_TRACE("begin"); + INDEV_TRACE("begin"); lv_indev_data_t data; @@ -111,7 +115,7 @@ void lv_indev_read_task_cb(lv_timer_t * task) indev_act = NULL; indev_obj_act = NULL; - LV_LOG_TRACE("finished"); + INDEV_TRACE("finished"); } void lv_indev_enable(lv_indev_t * indev, bool en) @@ -387,6 +391,7 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data) /*Key press happened*/ if(data->state == LV_INDEV_STATE_PRESSED && prev_state == LV_INDEV_STATE_RELEASED) { + LV_LOG_INFO("%d key is pressed", data->key); i->proc.pr_timestamp = lv_tick_get(); /*Simulate a press on the object if ENTER was pressed*/ @@ -478,6 +483,7 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data) } /*Release happened*/ else if(data->state == LV_INDEV_STATE_RELEASED && prev_state == LV_INDEV_STATE_PRESSED) { + LV_LOG_INFO("%d key is released", data->key); /*The user might clear the key when it was released. Always release the pressed key*/ data->key = prev_key; if(data->key == LV_KEY_ENTER) { @@ -541,6 +547,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) /*Button press happened*/ if(data->state == LV_INDEV_STATE_PRESSED && last_state == LV_INDEV_STATE_RELEASED) { + LV_LOG_INFO("pressed"); i->proc.pr_timestamp = lv_tick_get(); @@ -633,6 +640,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) } /*Release happened*/ else if(data->state == LV_INDEV_STATE_RELEASED && last_state == LV_INDEV_STATE_PRESSED) { + LV_LOG_INFO("released"); if(data->key == LV_KEY_ENTER) { bool editable = lv_obj_is_editable(indev_obj_act); @@ -684,6 +692,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) /*if encoder steps or simulated steps via left/right keys*/ if(data->enc_diff != 0) { + LV_LOG_INFO("rotated by %d", data->enc_diff); /*In edit mode send LEFT/RIGHT keys*/ if(lv_group_get_editing(g)) { int32_t s; @@ -717,13 +726,23 @@ static void indev_button_proc(lv_indev_t * i, lv_indev_data_t * data) { /* Die gracefully if i->btn_points is NULL */ if(i->btn_points == NULL) { - LV_LOG_WARN("indev_button_proc: btn_points was NULL"); + LV_LOG_WARN("btn_points is NULL"); return; } lv_coord_t x = i->btn_points[data->btn_id].x; lv_coord_t y = i->btn_points[data->btn_id].y; + static lv_indev_state_t prev_state = LV_INDEV_STATE_RELEASED; + if(prev_state != data->state) { + if(data->state == LV_INDEV_STATE_PRESSED) { + LV_LOG_INFO("button %d is pressed (x:%d y:%d)", data->btn_id, x, y); + } + else { + LV_LOG_INFO("button %d is released (x:%d y:%d)", data->btn_id, x, y); + } + } + /*If a new point comes always make a release*/ if(data->state == LV_INDEV_STATE_PRESSED) { if(i->proc.types.pointer.last_point.x != x || @@ -754,6 +773,7 @@ static void indev_button_proc(lv_indev_t * i, lv_indev_data_t * data) */ static void indev_proc_press(lv_indev_proc_t * proc) { + LV_LOG_INFO("pressed at x:%d y:%d", proc->types.pointer.act_point.x, proc->types.pointer.act_point.y); indev_obj_act = proc->types.pointer.act_obj; if(proc->wait_until_release != 0) return; @@ -911,6 +931,7 @@ static void indev_proc_release(lv_indev_proc_t * proc) /*Forget the act obj and send a released signal */ if(indev_obj_act) { + LV_LOG_INFO("released"); /*Send RELEASE signal and event*/ lv_signal_send(indev_obj_act, LV_SIGNAL_RELEASED, indev_act); diff --git a/src/lv_core/lv_obj.c b/src/lv_core/lv_obj.c index 4d5285588..e4e0f4b90 100644 --- a/src/lv_core/lv_obj.c +++ b/src/lv_core/lv_obj.c @@ -88,6 +88,17 @@ const lv_obj_class_t lv_obj_class = { /********************** * MACROS **********************/ +#if LV_LOG_TRACE_EVENT +# define EVENT_TRACE(...) LV_LOG_TRACE( __VA_ARGS__) +#else +# define EVENT_TRACE(...) +#endif + +#if LV_LOG_TRACE_SIGNAL +# define SIGNAL_TRACE(...) LV_LOG_TRACE( __VA_ARGS__) +#else +# define SIGNAL_TRACE(...) +#endif /********************** * GLOBAL FUNCTIONS @@ -101,7 +112,7 @@ void lv_init(void) return; } - LV_LOG_TRACE("begin"); + LV_LOG_INFO("begin"); /*Initialize the lv_misc modules*/ lv_mem_init(); @@ -188,7 +199,7 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param) LV_ASSERT_OBJ(obj, MY_CLASS); - LV_LOG_TRACE("Sending event %d to 0x%p with 0x%p param", event, obj, param); + EVENT_TRACE("Sending event %d to 0x%p with 0x%p param", event, obj, param); /*Nothing to do if no event function and not bubbled*/ lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0); @@ -289,7 +300,7 @@ lv_res_t lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param) { if(obj == NULL) return LV_RES_OK; - LV_LOG_TRACE("Sending signal %d to 0x%p with 0x%p param", signal, obj, param); + SIGNAL_TRACE("Sending signal %d to 0x%p with 0x%p param", signal, obj, param); const lv_obj_class_t * class_p = obj->class_p; while(class_p && class_p->signal_cb == NULL) class_p = class_p->base_class; @@ -546,12 +557,12 @@ bool lv_obj_is_valid(const lv_obj_t * obj) static void lv_obj_constructor(lv_obj_t * obj, const lv_obj_t * copy) { - LV_LOG_TRACE("begin"); + LV_TRACE_OBJ_CREATE("begin"); lv_obj_t * parent = obj->parent; /*Create a screen*/ if(parent == NULL) { - LV_LOG_TRACE("creating a screen"); + LV_TRACE_OBJ_CREATE("creating a screen"); lv_disp_t * disp = lv_disp_get_default(); if(!disp) { LV_LOG_WARN("No display created to so far. No place to assign the new screen"); @@ -576,7 +587,7 @@ static void lv_obj_constructor(lv_obj_t * obj, const lv_obj_t * copy) } /*Create a normal object*/ else { - LV_LOG_TRACE("creating normal object"); + LV_TRACE_OBJ_CREATE("creating normal object"); LV_ASSERT_OBJ(parent, MY_CLASS); if(parent->spec_attr == NULL) { lv_obj_allocate_spec_attr(parent); @@ -648,7 +659,7 @@ static void lv_obj_constructor(lv_obj_t * obj, const lv_obj_t * copy) } } - LV_LOG_TRACE("finished"); + LV_TRACE_OBJ_CREATE("finished"); } static void lv_obj_destructor(lv_obj_t * p) diff --git a/src/lv_core/lv_obj.h b/src/lv_core/lv_obj.h index 059b3848d..b572719c1 100644 --- a/src/lv_core/lv_obj.h +++ b/src/lv_core/lv_obj.h @@ -525,6 +525,12 @@ bool lv_obj_is_valid(const lv_obj_t * obj); # define LV_ASSERT_OBJ(obj_p, obj_class) do{}while(0) #endif +#if LV_LOG_TRACE_OBJ_CREATE +# define LV_TRACE_OBJ_CREATE(...) LV_LOG_TRACE( __VA_ARGS__) +#else +# define LV_TRACE_OBJ_CREATE(...) +#endif + #ifdef __cplusplus } /* extern "C" */ diff --git a/src/lv_core/lv_obj_class.c b/src/lv_core/lv_obj_class.c index a32ab72dd..9b5f031cf 100644 --- a/src/lv_core/lv_obj_class.c +++ b/src/lv_core/lv_obj_class.c @@ -42,7 +42,7 @@ static uint32_t get_instance_size(const lv_obj_class_t * class_p); lv_obj_t * lv_obj_create_from_class(const lv_obj_class_t * class_p, lv_obj_t * parent, const lv_obj_t * copy) { - LV_LOG_TRACE("Creating object with 0x%p class on 0x%p parent", class_p, parent); + LV_TRACE_OBJ_CREATE("Creating object with 0x%p class on 0x%p parent", class_p, parent); uint32_t s = get_instance_size(class_p); lv_obj_t * obj = lv_mem_alloc(s); lv_memset_00(obj, s); @@ -66,7 +66,7 @@ lv_obj_t * lv_obj_create_from_class(const lv_obj_class_t * class_p, lv_obj_t * p if(!copy) lv_theme_apply(obj); // else lv_style_list_copy(&checkbox->style_indic, &checkbox_copy->style_indic); - LV_LOG_TRACE("Object created at 0x%p address with 0x%p class on 0x%p parent", obj, class_p, parent); + LV_TRACE_OBJ_CREATE("Object created at 0x%p address with 0x%p class on 0x%p parent", obj, class_p, parent); return obj; } diff --git a/src/lv_core/lv_obj_pos.c b/src/lv_core/lv_obj_pos.c index 346628dae..c0f123e3c 100644 --- a/src/lv_core/lv_obj_pos.c +++ b/src/lv_core/lv_obj_pos.c @@ -187,15 +187,15 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co lv_coord_t ptop = lv_obj_get_style_pad_top(parent, LV_PART_MAIN); switch(align) { case LV_ALIGN_CENTER: - x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2 - pleft; - y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2- ptop; + x = lv_obj_get_width_fit(base) / 2 - lv_obj_get_width(obj) / 2; + y = lv_obj_get_height_fit(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_IN_TOP_LEFT: x = 0; y = 0; break; case LV_ALIGN_IN_TOP_MID: - x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2 - pleft; + x = lv_obj_get_width_fit(base) / 2 - lv_obj_get_width(obj) / 2; y = 0; break; @@ -209,7 +209,7 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co y = lv_obj_get_height_fit(base) - lv_obj_get_height(obj); break; case LV_ALIGN_IN_BOTTOM_MID: - x = lv_obj_get_width(base) / 2 - lv_obj_get_width(obj) / 2 - pleft; + x = lv_obj_get_width_fit(base) / 2 - lv_obj_get_width(obj) / 2; y = lv_obj_get_height_fit(base) - lv_obj_get_height(obj); break; @@ -220,7 +220,7 @@ void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t align, lv_co case LV_ALIGN_IN_LEFT_MID: x = 0; - y = lv_obj_get_height(base) / 2 - lv_obj_get_height(obj) / 2; + y = lv_obj_get_height_fit(base) / 2 - lv_obj_get_height(obj) / 2; break; case LV_ALIGN_IN_RIGHT_MID: diff --git a/src/lv_core/lv_obj_tree.c b/src/lv_core/lv_obj_tree.c index 29a44dd21..ae425159e 100644 --- a/src/lv_core/lv_obj_tree.c +++ b/src/lv_core/lv_obj_tree.c @@ -45,6 +45,7 @@ static void obj_del_core(lv_obj_t * obj); void lv_obj_del(lv_obj_t * obj) { + LV_LOG_TRACE("begin (delete 0x%p)", obj) LV_ASSERT_OBJ(obj, MY_CLASS); lv_obj_invalidate(obj); @@ -76,12 +77,17 @@ void lv_obj_del(lv_obj_t * obj) /*Handle if the active screen was deleted*/ if(act_scr_del) { + LV_LOG_WARN("the active screen was deleted") disp->act_scr = NULL; } + + LV_ASSERT_MEM_INTEGRITY(); + LV_LOG_TRACE("finished (delete 0x%p)", obj) } void lv_obj_clean(lv_obj_t * obj) { + LV_LOG_TRACE("begin (delete 0x%p)", obj) LV_ASSERT_OBJ(obj, MY_CLASS); lv_obj_invalidate(obj); @@ -97,6 +103,10 @@ void lv_obj_clean(lv_obj_t * obj) obj->spec_attr->scroll.x = 0; obj->spec_attr->scroll.y = 0; } + + LV_ASSERT_MEM_INTEGRITY(); + + LV_LOG_TRACE("finished (delete 0x%p)", obj) } void lv_obj_del_anim_ready_cb(lv_anim_t * a) diff --git a/src/lv_core/lv_refr.c b/src/lv_core/lv_refr.c index 5c88386af..8b48c955b 100644 --- a/src/lv_core/lv_refr.c +++ b/src/lv_core/lv_refr.c @@ -60,6 +60,11 @@ static lv_disp_t * disp_refr; /*Display being refreshed*/ /********************** * MACROS **********************/ +#if LV_LOG_TRACE_DISP_REFR +# define TRACE_REFR(...) LV_LOG_TRACE( __VA_ARGS__) +#else +# define TRACE_REFR(...) +#endif /********************** * GLOBAL FUNCTIONS @@ -180,7 +185,7 @@ void _lv_refr_set_disp_refreshing(lv_disp_t * disp) */ void _lv_disp_refr_task(lv_timer_t * tmr) { - LV_LOG_TRACE("begin"); + TRACE_REFR("begin"); uint32_t start = lv_tick_get(); uint32_t elaps = 0; @@ -197,7 +202,7 @@ void _lv_disp_refr_task(lv_timer_t * tmr) /*Do nothing if there is no active screen*/ if(disp_refr->act_scr == NULL) { disp_refr->inv_p = 0; - LV_LOG_TRACE("finished (there were no invalid areas to redraw)"); + TRACE_REFR("finished (there were no invalid areas to redraw)"); return; } @@ -299,7 +304,7 @@ void _lv_disp_refr_task(lv_timer_t * tmr) } #endif - LV_LOG_TRACE("finished"); + TRACE_REFR("finished"); } #if LV_USE_PERF_MONITOR @@ -933,6 +938,6 @@ static lv_draw_res_t call_draw_cb(lv_obj_t * obj, const lv_area_t * clip_area, l static void call_flush_cb(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p) { - LV_LOG_TRACE("Calling flush_cb on (%d;%d)(%d;%d) area with 0x%p image pointer", area->x1, area->y1, area->x2, area->y2, color_p); + TRACE_REFR("Calling flush_cb on (%d;%d)(%d;%d) area with 0x%p image pointer", area->x1, area->y1, area->x2, area->y2, color_p); drv->flush_cb(drv, area, color_p); }