diff --git a/gfx/drivers/gx_gfx.c b/gfx/drivers/gx_gfx.c index b42282bb2c..0fd8dc4ed2 100644 --- a/gfx/drivers/gx_gfx.c +++ b/gfx/drivers/gx_gfx.c @@ -237,7 +237,6 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines, unsigned modetype, level, viHeightMultiplier, viWidth, tvmode, max_width, max_height, i; gx_video_t *gx = (gx_video_t*)data; - menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); settings_t *settings = config_get_ptr(); (void)level; @@ -395,7 +394,6 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines, gx_mode.efbHeight, (gx_mode.viTVMode & 3) == VI_INTERLACE ? "interlaced" : "progressive"); - if (frame_buf) { size_t new_fb_pitch; unsigned new_fb_width; @@ -412,8 +410,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines, menu_display_ctl(MENU_DISPLAY_CTL_SET_WIDTH, &new_fb_width); menu_display_ctl(MENU_DISPLAY_CTL_SET_HEIGHT, &new_fb_height); - - frame_buf->pitch = new_fb_pitch; + menu_display_ctl(MENU_DISPLAY_CTL_SET_FB_PITCH, &new_fb_pitch); } if (tvmode == VI_PAL) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index a0069db971..f49094ec83 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -673,7 +673,7 @@ static void *rgui_init(void) fill_rect(frame_buf->data, frame_buf->pitch, 0, frame_buf->height, frame_buf->width, 4, gray_filler); - rgui->last_width = frame_buf->width; + rgui->last_width = frame_buf->width; rgui->last_height = frame_buf->height; return menu; diff --git a/menu/menu_display.c b/menu/menu_display.c index 0ab217de8c..52e139e6b8 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -266,6 +266,14 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data) *ptr = frame_buf->pitch; } return true; + case MENU_DISPLAY_CTL_SET_FB_PITCH: + { + size_t *ptr = (size_t*)data; + if (!ptr) + return false; + frame_buf->pitch = *ptr; + } + return true; case MENU_DISPLAY_CTL_UPDATE_PENDING: { menu_animation_t *anim = menu_animation_get_ptr(); diff --git a/menu/menu_display.h b/menu/menu_display.h index 2609d07f12..6a6cd59ee7 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -43,7 +43,8 @@ enum menu_display_ctl_state MENU_DISPLAY_CTL_SET_WIDTH, MENU_DISPLAY_CTL_SET_HEIGHT, MENU_DISPLAY_CTL_FB_DATA, - MENU_DISPLAY_CTL_FB_PITCH + MENU_DISPLAY_CTL_FB_PITCH, + MENU_DISPLAY_CTL_SET_FB_PITCH }; typedef struct menu_framebuf