mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-28 13:36:27 +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 ...*/
|
/*If refresh happened ...*/
|
||||||
lv_display_send_event(disp_refr, LV_EVENT_RENDER_READY, NULL);
|
lv_display_send_event(disp_refr, LV_EVENT_RENDER_READY, NULL);
|
||||||
|
|
||||||
if(!lv_display_is_double_buffered(disp_refr) ||
|
/*In double buffered direct mode save the updated areas.
|
||||||
disp_refr->render_mode != LV_DISPLAY_RENDER_MODE_DIRECT) goto refr_clean_up;
|
*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*/
|
lv_area_t * sync_area = _lv_ll_ins_tail(&disp_refr->sync_areas);
|
||||||
/*We need to wait for ready here to not mess up the active screen*/
|
*sync_area = disp_refr->inv_areas[i];
|
||||||
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];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refr_clean_up:
|
|
||||||
lv_memzero(disp_refr->inv_areas, sizeof(disp_refr->inv_areas));
|
lv_memzero(disp_refr->inv_areas, sizeof(disp_refr->inv_areas));
|
||||||
lv_memzero(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined));
|
lv_memzero(disp_refr->inv_area_joined, sizeof(disp_refr->inv_area_joined));
|
||||||
disp_refr->inv_p = 0;
|
disp_refr->inv_p = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user