diff --git a/src/draw/sdl/lv_draw_sdl.h b/src/draw/sdl/lv_draw_sdl.h index 1bd744ce1f..9b44a7b2f6 100644 --- a/src/draw/sdl/lv_draw_sdl.h +++ b/src/draw/sdl/lv_draw_sdl.h @@ -44,6 +44,7 @@ typedef struct { * Render for display driver */ SDL_Renderer * renderer; + void * user_data; } lv_draw_sdl_drv_param_t; typedef struct { diff --git a/src/widgets/lv_canvas.c b/src/widgets/lv_canvas.c index e43daf1505..a55429bdf3 100644 --- a/src/widgets/lv_canvas.c +++ b/src/widgets/lv_canvas.c @@ -14,6 +14,8 @@ #if LV_USE_CANVAS != 0 +#include "../draw/sw/lv_draw_sw.h" + /********************* * DEFINES *********************/ @@ -844,12 +846,10 @@ static void init_fake_disp(lv_obj_t * canvas, lv_disp_t * disp, lv_disp_drv_t * disp->driver->hor_res = dsc->header.w; disp->driver->ver_res = dsc->header.h; - lv_disp_t * canvas_disp = lv_obj_get_disp(canvas); - - lv_draw_ctx_t * draw_ctx = lv_mem_alloc(canvas_disp->driver->draw_ctx_size); + lv_draw_ctx_t * draw_ctx = lv_mem_alloc(sizeof(lv_draw_sw_ctx_t)); LV_ASSERT_MALLOC(draw_ctx); if(draw_ctx == NULL) return; - canvas_disp->driver->draw_ctx_init(disp->driver, draw_ctx); + lv_draw_sw_init_ctx(drv, draw_ctx); disp->driver->draw_ctx = draw_ctx; draw_ctx->clip_area = clip_area; draw_ctx->buf_area = clip_area; @@ -860,8 +860,9 @@ static void init_fake_disp(lv_obj_t * canvas, lv_disp_t * disp, lv_disp_drv_t * static void deinit_fake_disp(lv_obj_t * canvas, lv_disp_t * disp) { - lv_disp_t * canvas_disp = lv_obj_get_disp(canvas); - canvas_disp->driver->draw_ctx_deinit(disp->driver, disp->driver->draw_ctx); + LV_UNUSED(canvas); + lv_draw_sw_deinit_ctx(disp->driver, disp->driver->draw_ctx); + lv_mem_free(disp->driver->draw_ctx); }