diff --git a/gfx/gl.c b/gfx/gl.c index 1d8aea6be3..4633b39d26 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -1644,8 +1644,8 @@ static bool gl_frame(void *data, const void *frame, unsigned width, unsigned hei #endif #endif - // Disable BFI during fast forward to prevent flicker - if (g_settings.video.black_frame_insertion && !driver.nonblock_state) + // Disable BFI during fast forward, slow-motion, and pause to prevent flicker + if (g_settings.video.black_frame_insertion && !driver.nonblock_state && !g_extern.is_slowmotion && !g_extern.is_paused) { context_swap_buffers_func(gl); glClear(GL_COLOR_BUFFER_BIT); diff --git a/retroarch.c b/retroarch.c index feadd9b314..bf325e7d36 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2270,6 +2270,9 @@ static void check_slowmotion(void) if (!g_extern.is_slowmotion) return; + if (g_settings.video.black_frame_insertion) + rarch_render_cached_frame(); + msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, g_extern.frame_is_reverse ? "Slow motion rewind." : "Slow motion.", 0, 30); @@ -2394,6 +2397,9 @@ static void check_pause(void) if (has_set_audio_start) rarch_main_command(RARCH_CMD_AUDIO_START); + if (g_extern.is_paused && g_settings.video.black_frame_insertion) + rarch_render_cached_frame(); + old_focus = focus; old_state = new_state; }