1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-14 06:42:58 +08:00

feat(refr): in DIRECT_MODE pass the refreshed area in flush_cb

related to https://github.com/lvgl/lvgl/issues/4011#issuecomment-1543741410
This commit is contained in:
Gabor Kiss-Vamosi 2023-05-12 13:23:32 +02:00
parent 540c028d60
commit 6a47c6f33a
2 changed files with 7 additions and 1 deletions

View File

@ -446,11 +446,13 @@ static void refr_area(const lv_area_t * area_p)
if(disp_refr->render_mode == LV_DISP_RENDER_MODE_FULL) {
disp_refr->last_part = 1;
draw_ctx->clip_area = &disp_area;
draw_ctx->clip_area_original = disp_area;
refr_area_part(draw_ctx);
}
else if(disp_refr->render_mode == LV_DISP_RENDER_MODE_DIRECT) {
disp_refr->last_part = disp_refr->last_area;
draw_ctx->clip_area = area_p;
draw_ctx->clip_area_original = *area_p;
refr_area_part(draw_ctx);
}
return;
@ -490,6 +492,7 @@ static void refr_area(const lv_area_t * area_p)
sub_area.x2 = area_p->x2;
sub_area.y1 = row;
sub_area.y2 = y2;
draw_ctx->clip_area_original = sub_area;
draw_ctx->buf_area = &sub_area;
draw_ctx->clip_area = &sub_area;
draw_ctx->buf = disp_refr->draw_buf_act;
@ -1055,7 +1058,7 @@ static void draw_buf_flush(lv_disp_t * disp)
draw_buf_rotate(draw_ctx->buf_area, draw_ctx->buf);
}
else {
call_flush_cb(disp, draw_ctx->buf_area, draw_ctx->buf);
call_flush_cb(disp, &draw_ctx->clip_area_original, draw_ctx->buf);
}
}
/*If there are 2 buffers swap them. With direct mode swap only on the last area*/

View File

@ -73,6 +73,9 @@ typedef struct _lv_draw_ctx_t {
*/
const lv_area_t * clip_area;
/** The original area which is updated*/
lv_area_t clip_area_original;
/**
* The rendered image in draw_ctx->buf will be converted to this format
* using draw_ctx->buffer_convert.