diff --git a/src/draw/lv_draw_vector.c b/src/draw/lv_draw_vector.c index 95ecbf3b35..b646543a2f 100644 --- a/src/draw/lv_draw_vector.c +++ b/src/draw/lv_draw_vector.c @@ -735,7 +735,7 @@ void _lv_vector_for_each_destroy_tasks(lv_ll_t * task_list, vector_draw_task_cb _lv_ll_remove(task_list, task); if(cb) { - cb(data ? data : NULL, task->path, &(task->dsc)); + cb(data, task->path, &(task->dsc)); } if(task->path) { diff --git a/src/draw/sw/lv_draw_sw_vector.c b/src/draw/sw/lv_draw_sw_vector.c index 778ad63d30..c709b2d1aa 100644 --- a/src/draw/sw/lv_draw_sw_vector.c +++ b/src/draw/sw/lv_draw_sw_vector.c @@ -439,8 +439,10 @@ void lv_draw_sw_vector(lv_draw_unit_t * draw_unit, const lv_draw_vector_task_dsc void * buf = layer->buf; int32_t width = lv_area_get_width(&layer->buf_area); int32_t height = lv_area_get_height(&layer->buf_area); + uint32_t stride = layer->buf_stride; + stride /= 4; Tvg_Canvas * canvas = tvg_swcanvas_create(); - tvg_swcanvas_set_target(canvas, buf, width, width, height, TVG_COLORSPACE_ARGB8888); + tvg_swcanvas_set_target(canvas, buf, stride, width, height, TVG_COLORSPACE_ARGB8888); lv_ll_t * task_list = dsc->task_list; _lv_vector_for_each_destroy_tasks(task_list, _task_draw_cb, canvas); diff --git a/tests/src/test_cases/draw/test_draw_vector.c b/tests/src/test_cases/draw/test_draw_vector.c index f533ccb836..e4de433ef7 100644 --- a/tests/src/test_cases/draw/test_draw_vector.c +++ b/tests/src/test_cases/draw/test_draw_vector.c @@ -202,10 +202,11 @@ static void draw_lines(lv_layer_t * layer) static void canvas_draw(const char * name, void (*draw_cb)(lv_layer_t *)) { - static uint8_t canvas_buf[LV_CANVAS_BUF_SIZE(640, 480, 32, LV_DRAW_BUF_STRIDE_ALIGN)]; lv_obj_t * canvas = lv_canvas_create(lv_screen_active()); - lv_canvas_set_buffer(canvas, canvas_buf, 640, 480, - LV_COLOR_FORMAT_ARGB8888); + uint32_t stride = 640 * 4 + 128; /*Test non-default stride*/ + lv_draw_buf_t * draw_buf = lv_draw_buf_create(640, 480, LV_COLOR_FORMAT_ARGB8888, stride); + TEST_ASSERT_NOT_NULL(draw_buf); + lv_canvas_set_draw_buf(canvas, draw_buf); lv_layer_t layer; lv_canvas_init_layer(canvas, &layer); @@ -219,6 +220,9 @@ static void canvas_draw(const char * name, void (*draw_cb)(lv_layer_t *)) lv_snprintf(fn_buf, sizeof(fn_buf), "draw/vector_%s.png", name); TEST_ASSERT_EQUAL_SCREENSHOT(fn_buf); #endif + lv_image_cache_drop(draw_buf); + lv_draw_buf_destroy(draw_buf); + lv_obj_del(canvas); } void test_draw_lines(void)