1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

Suspend the refresh task if a refresh is not necessary

This commit is contained in:
Themba Dube 2019-12-10 20:09:40 -05:00
parent d20c4bb26a
commit 4cb5ab4a03
3 changed files with 11 additions and 1 deletions

View File

@ -131,6 +131,8 @@ void lv_inv_area(lv_disp_t * disp, const lv_area_t * area_p)
lv_area_copy(&disp->inv_areas[disp->inv_p], &scr_area);
}
disp->inv_p++;
lv_task_set_prio(disp->refr_task, LV_REFR_TASK_PRIO);
dprintf("refr task enabled\n");
}
}
@ -164,6 +166,12 @@ void lv_disp_refr_task(lv_task_t * task)
uint32_t start = lv_tick_get();
/* Ensure the task does not run again automatically.
* This is done before refreshing in case refreshing invalidates something else.
*/
lv_task_set_prio(task, LV_TASK_PRIO_OFF);
dprintf("refr task disabled\n");
disp_refr = task->user_data;
lv_refr_join_area();

View File

@ -20,6 +20,8 @@ extern "C" {
* DEFINES
*********************/
#define LV_REFR_TASK_PRIO LV_TASK_PRIO_MID
/**********************
* TYPEDEFS
**********************/

View File

@ -147,7 +147,7 @@ lv_disp_t * lv_disp_drv_register(lv_disp_drv_t * driver)
disp_def = disp_def_tmp; /*Revert the default display*/
/*Create a refresh task*/
disp->refr_task = lv_task_create(lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, disp);
disp->refr_task = lv_task_create(lv_disp_refr_task, LV_DISP_DEF_REFR_PERIOD, LV_REFR_TASK_PRIO, disp);
LV_ASSERT_MEM(disp->refr_task);
if(disp->refr_task == NULL) return NULL;