(Dingux) Fix display when cores 'drop' frames

This commit is contained in:
jdgleaver 2021-07-13 13:11:19 +01:00
parent 3bc06b0d57
commit eb259174b8

View File

@ -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 */