fix(draw): initialize layer->buf_stride
This commit is contained in:
@@ -588,6 +588,7 @@ static void refr_area(const lv_area_t * area_p)
|
||||
layer->buf_area.y1 = 0;
|
||||
layer->buf_area.x2 = lv_display_get_horizontal_resolution(disp_refr) - 1;
|
||||
layer->buf_area.y2 = lv_display_get_vertical_resolution(disp_refr) - 1;
|
||||
layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format);
|
||||
lv_area_t disp_area;
|
||||
lv_area_set(&disp_area, 0, 0, lv_display_get_horizontal_resolution(disp_refr) - 1,
|
||||
lv_display_get_vertical_resolution(disp_refr) - 1);
|
||||
@@ -625,6 +626,7 @@ static void refr_area(const lv_area_t * area_p)
|
||||
sub_area.y2 = row + max_row - 1;
|
||||
layer->buf = disp_refr->buf_act;
|
||||
layer->buf_area = sub_area;
|
||||
layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format);
|
||||
layer->clip_area = sub_area;
|
||||
if(sub_area.y2 > y2) sub_area.y2 = y2;
|
||||
row_last = sub_area.y2;
|
||||
@@ -658,7 +660,7 @@ static void refr_area_part(lv_layer_t * layer)
|
||||
}
|
||||
/*If the screen is transparent initialize it when the flushing is ready*/
|
||||
if(lv_color_format_has_alpha(disp_refr->color_format)) {
|
||||
uint32_t w = lv_area_get_width(&layer->buf_area);
|
||||
uint32_t w = layer->buf_stride;
|
||||
uint32_t h = lv_area_get_height(&layer->buf_area);
|
||||
lv_draw_buf_clear(layer->buf, w, h, layer->color_format, &disp_refr->refreshed_area);
|
||||
}
|
||||
|
||||
@@ -82,6 +82,7 @@ lv_display_t * lv_display_create(int32_t hor_res, int32_t ver_res)
|
||||
disp->layer_head->buf_area.y1 = 0;
|
||||
disp->layer_head->buf_area.x2 = hor_res - 1;
|
||||
disp->layer_head->buf_area.y2 = ver_res - 1;
|
||||
disp->layer_head->buf_stride = lv_draw_buf_width_to_stride(hor_res, LV_COLOR_FORMAT_NATIVE);
|
||||
disp->layer_head->color_format = disp->color_format;
|
||||
|
||||
disp->inv_en_cnt = 1;
|
||||
|
||||
@@ -321,6 +321,7 @@ lv_layer_t * lv_draw_layer_create(lv_layer_t * parent_layer, lv_color_format_t c
|
||||
new_layer->parent = parent_layer;
|
||||
new_layer->clip_area = *area;
|
||||
new_layer->buf_area = *area;
|
||||
new_layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(area), color_format);
|
||||
new_layer->color_format = color_format;
|
||||
|
||||
if(disp->layer_head) {
|
||||
@@ -372,8 +373,7 @@ void * lv_draw_layer_alloc_buf(lv_layer_t * layer)
|
||||
|
||||
void * lv_draw_layer_go_to_xy(lv_layer_t * layer, int32_t x, int32_t y)
|
||||
{
|
||||
uint32_t stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format);
|
||||
return lv_draw_buf_go_to_xy(layer->buf, stride, layer->color_format, x, y);
|
||||
return lv_draw_buf_go_to_xy(layer->buf, layer->buf_stride, layer->color_format, x, y);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -303,6 +303,7 @@ void lv_canvas_init_layer(lv_obj_t * canvas, lv_layer_t * layer)
|
||||
layer->color_format = dsc->header.cf;
|
||||
layer->buf_area = canvas_area;
|
||||
layer->clip_area = canvas_area;
|
||||
layer->buf_stride = lv_draw_buf_width_to_stride(lv_area_get_width(&layer->buf_area), layer->color_format);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user