mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-21 14:32:44 +08:00
fix(refr): remove the unnecessary wait for flush in double buffered direct mode (#6120)
This commit is contained in:
committed by
GitHub
parent
60f27aad53
commit
dfe7bd5563
+10
-14
@@ -378,23 +378,19 @@ void _lv_display_refr_timer(lv_timer_t * tmr)
|
||||
/*If refresh happened ...*/
|
||||
lv_display_send_event(disp_refr, LV_EVENT_RENDER_READY, NULL);
|
||||
|
||||
if(!lv_display_is_double_buffered(disp_refr) ||
|
||||
disp_refr->render_mode != LV_DISPLAY_RENDER_MODE_DIRECT) goto refr_clean_up;
|
||||
/*In double buffered direct mode save the updated areas.
|
||||
*They will be used on the next call to synchronize the buffers.*/
|
||||
if(lv_display_is_double_buffered(disp_refr) && disp_refr->render_mode == LV_DISPLAY_RENDER_MODE_DIRECT) {
|
||||
uint32_t i;
|
||||
for(i = 0; i < disp_refr->inv_p; i++) {
|
||||
if(disp_refr->inv_area_joined[i])
|
||||
continue;
|
||||
|
||||
/*With double buffered direct mode synchronize the rendered areas to the other buffer*/
|
||||
/*We need to wait for ready here to not mess up the active screen*/
|
||||
wait_for_flushing(disp_refr);
|
||||
|
||||
uint32_t i;
|
||||
for(i = 0; i < disp_refr->inv_p; i++) {
|
||||
if(disp_refr->inv_area_joined[i])
|
||||
continue;
|
||||
|
||||
lv_area_t * sync_area = _lv_ll_ins_tail(&disp_refr->sync_areas);
|
||||
*sync_area = disp_refr->inv_areas[i];
|
||||
lv_area_t * sync_area = _lv_ll_ins_tail(&disp_refr->sync_areas);
|
||||
*sync_area = disp_refr->inv_areas[i];
|
||||
}
|
||||
}
|
||||
|
||||
refr_clean_up:
|
||||
lv_memzero(disp_refr->inv_areas, sizeof(disp_refr->inv_areas));
|
||||
lv_memzero(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined));
|
||||
disp_refr->inv_p = 0;
|
||||
|
||||
Reference in New Issue
Block a user