diff --git a/gfx/drivers/sdl_dingux_gfx.c b/gfx/drivers/sdl_dingux_gfx.c index 865c16f478..faf1511124 100644 --- a/gfx/drivers/sdl_dingux_gfx.c +++ b/gfx/drivers/sdl_dingux_gfx.c @@ -761,7 +761,13 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, { sdl_dingux_video_t* vid = (sdl_dingux_video_t*)data; - if (unlikely(!vid)) + /* Return early if: + * - Input sdl_dingux_video_t struct is NULL + * (cannot realistically happen) + * - Menu is inactive and input 'content' frame + * data is NULL (may happen when e.g. a running + * core skips a frame) */ + if (unlikely(!vid || (!frame && !vid->menu_active))) return true; /* If fast forward is currently active, we may @@ -805,16 +811,13 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame, if (likely(vid->mode_valid)) { - if (likely(frame)) - { - /* Blit frame to SDL surface */ - if (vid->rgb32) - sdl_dingux_blit_frame32(vid, (uint32_t*)frame, - width, height, pitch); - else - sdl_dingux_blit_frame16(vid, (uint16_t*)frame, - width, height, pitch); - } + /* Blit frame to SDL surface */ + if (vid->rgb32) + sdl_dingux_blit_frame32(vid, (uint32_t*)frame, + width, height, pitch); + else + sdl_dingux_blit_frame16(vid, (uint16_t*)frame, + width, height, pitch); } /* If current display mode is invalid, * just display an error message */