mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
reduce CPU usage of the performance monitor
This commit is contained in:
parent
f25633f60f
commit
ea81e21dd0
@ -175,6 +175,7 @@ void lv_disp_refr_task(lv_task_t * task)
|
|||||||
LV_LOG_TRACE("lv_refr_task: started");
|
LV_LOG_TRACE("lv_refr_task: started");
|
||||||
|
|
||||||
uint32_t start = lv_tick_get();
|
uint32_t start = lv_tick_get();
|
||||||
|
uint32_t elaps = 0;
|
||||||
|
|
||||||
/* Ensure the task does not run again automatically.
|
/* Ensure the task does not run again automatically.
|
||||||
* This is done before refreshing in case refreshing invalidates something else.
|
* This is done before refreshing in case refreshing invalidates something else.
|
||||||
@ -183,10 +184,6 @@ void lv_disp_refr_task(lv_task_t * task)
|
|||||||
|
|
||||||
disp_refr = task->user_data;
|
disp_refr = task->user_data;
|
||||||
|
|
||||||
|
|
||||||
// extern rect_cache_t cache[];
|
|
||||||
// extern uint32_t cp;
|
|
||||||
|
|
||||||
lv_refr_join_area();
|
lv_refr_join_area();
|
||||||
|
|
||||||
lv_refr_areas();
|
lv_refr_areas();
|
||||||
@ -232,11 +229,14 @@ void lv_disp_refr_task(lv_task_t * task)
|
|||||||
memset(disp_refr->inv_area_joined, 0, sizeof(disp_refr->inv_area_joined));
|
memset(disp_refr->inv_area_joined, 0, sizeof(disp_refr->inv_area_joined));
|
||||||
disp_refr->inv_p = 0;
|
disp_refr->inv_p = 0;
|
||||||
|
|
||||||
uint32_t elaps = lv_tick_elaps(start);
|
elaps = lv_tick_elaps(start);
|
||||||
/*Call monitor cb if present*/
|
/*Call monitor cb if present*/
|
||||||
if(disp_refr->driver.monitor_cb) {
|
if(disp_refr->driver.monitor_cb) {
|
||||||
disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num);
|
disp_refr->driver.monitor_cb(&disp_refr->driver, elaps, px_num);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lv_mem_buf_free_all();
|
||||||
|
|
||||||
#if LV_USE_PERF_MONITOR && LV_USE_LABEL
|
#if LV_USE_PERF_MONITOR && LV_USE_LABEL
|
||||||
static lv_obj_t * perf_label = NULL;
|
static lv_obj_t * perf_label = NULL;
|
||||||
@ -258,8 +258,13 @@ void lv_disp_refr_task(lv_task_t * task)
|
|||||||
static uint32_t elaps_max = 1;
|
static uint32_t elaps_max = 1;
|
||||||
if(lv_tick_elaps(perf_last_time) < 300) {
|
if(lv_tick_elaps(perf_last_time) < 300) {
|
||||||
elaps_max = LV_MATH_MAX(elaps, elaps_max);
|
elaps_max = LV_MATH_MAX(elaps, elaps_max);
|
||||||
/*Just refresh the label to always have something to monitor*/
|
/*Just refresh 1 px to have something to monitor*/
|
||||||
lv_label_set_text(perf_label, NULL);
|
lv_area_t a;
|
||||||
|
a.x1 = lv_disp_get_hor_res(disp_refr) - 1;
|
||||||
|
a.y1 = lv_disp_get_ver_res(disp_refr) - 1;
|
||||||
|
a.x2 = a.x1;
|
||||||
|
a.y2 = a.y1;
|
||||||
|
lv_inv_area(disp_refr, &a);
|
||||||
} else {
|
} else {
|
||||||
perf_last_time = lv_tick_get();
|
perf_last_time = lv_tick_get();
|
||||||
uint32_t fps = 1000 / (elaps_max == 0 ? 1 : elaps_max);
|
uint32_t fps = 1000 / (elaps_max == 0 ? 1 : elaps_max);
|
||||||
@ -272,9 +277,6 @@ void lv_disp_refr_task(lv_task_t * task)
|
|||||||
lv_obj_align(perf_label, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0);
|
lv_obj_align(perf_label, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
lv_mem_buf_free_all();
|
|
||||||
|
|
||||||
LV_LOG_TRACE("lv_refr_task: ready");
|
LV_LOG_TRACE("lv_refr_task: ready");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user