From d1151f4dbdede96e4edf59ec95e196f933ffb472 Mon Sep 17 00:00:00 2001 From: _VIFEXTech Date: Sat, 24 Feb 2024 22:57:24 +0800 Subject: [PATCH] fix(vg_lite): fix draw layer drawing is incomplete (#5729) Signed-off-by: pengyiqiang Co-authored-by: pengyiqiang --- src/draw/vg_lite/lv_draw_vg_lite_layer.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/draw/vg_lite/lv_draw_vg_lite_layer.c b/src/draw/vg_lite/lv_draw_vg_lite_layer.c index c70ba8946..f79f4188f 100644 --- a/src/draw/vg_lite/lv_draw_vg_lite_layer.c +++ b/src/draw/vg_lite/lv_draw_vg_lite_layer.c @@ -42,6 +42,7 @@ void lv_draw_vg_lite_layer(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t const lv_area_t * coords) { lv_layer_t * layer = (lv_layer_t *)draw_dsc->src; + struct _lv_draw_vg_lite_unit_t * u = (struct _lv_draw_vg_lite_unit_t *)draw_unit; /*It can happen that nothing was draw on a layer and therefore its buffer is not allocated. *In this case just return. */ @@ -58,6 +59,11 @@ void lv_draw_vg_lite_layer(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t lv_draw_image_dsc_t new_draw_dsc = *draw_dsc; new_draw_dsc.src = layer->draw_buf; lv_draw_vg_lite_img(draw_unit, &new_draw_dsc, coords, true); + + /* Wait for the GPU drawing to complete here, + * otherwise it may cause the drawing to fail. */ + lv_vg_lite_finish(u); + LV_PROFILER_END; }