1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

refactor(display_rotate_area): use a copy instead of const casting

This commit is contained in:
Akos Becsey 2024-06-26 09:38:20 +02:00 committed by Gabor Kiss-Vamosi
parent fd79a4f427
commit 20bbe4a8ac
3 changed files with 14 additions and 3 deletions

View File

@ -264,6 +264,7 @@ static void flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * colo
lv_color_format_t cf = lv_display_get_color_format(disp);
uint32_t px_size = lv_color_format_get_size(cf);
lv_area_t rotated_area;
lv_display_rotation_t rotation = lv_display_get_rotation(disp);
/* Not all framebuffer kernel drivers support hardware rotation, so we need to handle it in software here */
@ -295,7 +296,10 @@ static void flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * colo
color_p = dsc->rotated_buf;
/* Rotate the area */
lv_display_rotate_area(disp, (lv_area_t *)area);
rotated_area = *area;
lv_display_rotate_area(disp, &rotated_area);
area = &rotated_area;
if(rotation != LV_DISPLAY_ROTATION_180) {
w = lv_area_get_width(area);
h = lv_area_get_height(area);

View File

@ -284,6 +284,7 @@ static void flush_partial(lv_display_t * display, const lv_area_t * area, uint8_
{
uint16_t * img = (uint16_t *)px_map;
lv_area_t rotated_area;
lv_color_format_t cf = lv_display_get_color_format(display);
lv_display_rotation_t rotation = lv_display_get_rotation(display);
@ -305,7 +306,10 @@ static void flush_partial(lv_display_t * display, const lv_area_t * area, uint8_
lv_draw_sw_rotate(img, rotation_buffer, w, h, w_stride, h_stride, rotation, cf);
img = rotation_buffer;
lv_display_rotate_area(display, (lv_area_t *)area);
rotated_area = *area;
lv_display_rotate_area(display, &rotated_area);
area = &rotated_area;
}
int32_t w = lv_area_get_width(area);

View File

@ -222,6 +222,7 @@ static inline int sdl_render_mode(void)
static void flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * px_map)
{
#if LV_USE_DRAW_SDL == 0
lv_area_t rotated_area;
lv_sdl_window_t * dsc = lv_display_get_driver_data(disp);
lv_color_format_t cf = lv_display_get_color_format(disp);
@ -258,7 +259,9 @@ static void flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * px_m
px_map = dsc->rotated_buf;
lv_display_rotate_area(disp, (lv_area_t *)area);
rotated_area = *area;
lv_display_rotate_area(disp, &rotated_area);
area = &rotated_area;
}
uint32_t px_map_stride = lv_draw_buf_width_to_stride(lv_area_get_width(area), cf);