System: Fix black screen when changing options while paused

This commit is contained in:
Stenzek 2025-02-14 18:45:42 +10:00
parent 953bd0919b
commit 5ae32d3c70
No known key found for this signature in database

View File

@ -4491,8 +4491,12 @@ void System::CheckForSettingsChanges(const Settings& old_settings)
ClearMemorySaveStates(true, use_existing_textures); ClearMemorySaveStates(true, use_existing_textures);
if (IsPaused()) if (IsPaused())
{
// resolution change needs display updated
g_gpu.UpdateDisplay(false);
GPUThread::PresentCurrentFrame(); GPUThread::PresentCurrentFrame();
} }
}
else if (const bool device_settings_changed = g_settings.AreGPUDeviceSettingsChanged(old_settings); else if (const bool device_settings_changed = g_settings.AreGPUDeviceSettingsChanged(old_settings);
device_settings_changed || g_settings.display_show_fps != old_settings.display_show_fps || device_settings_changed || g_settings.display_show_fps != old_settings.display_show_fps ||
g_settings.display_show_speed != old_settings.display_show_speed || g_settings.display_show_speed != old_settings.display_show_speed ||
@ -4519,11 +4523,13 @@ void System::CheckForSettingsChanges(const Settings& old_settings)
GPUThread::UpdateSettings(true, true, g_settings.gpu_use_thread != old_settings.gpu_use_thread); GPUThread::UpdateSettings(true, true, g_settings.gpu_use_thread != old_settings.gpu_use_thread);
ClearMemorySaveStates(true, false); ClearMemorySaveStates(true, false);
if (IsPaused())
{
// and display the current frame on the new device // and display the current frame on the new device
g_gpu.UpdateDisplay(false); g_gpu.UpdateDisplay(false);
if (IsPaused())
GPUThread::PresentCurrentFrame(); GPUThread::PresentCurrentFrame();
} }
}
else else
{ {
// don't need to represent here, because the OSD isn't visible while paused anyway // don't need to represent here, because the OSD isn't visible while paused anyway