diff --git a/src/core/host_interface.cpp b/src/core/host_interface.cpp index bbf1c0990..e421ed42e 100644 --- a/src/core/host_interface.cpp +++ b/src/core/host_interface.cpp @@ -48,7 +48,11 @@ bool HostInterface::Initialize() return true; } -void HostInterface::Shutdown() {} +void HostInterface::Shutdown() +{ + if (!System::IsShutdown()) + System::Shutdown(); +} void HostInterface::CreateAudioStream() { diff --git a/src/frontend-common/common_host_interface.cpp b/src/frontend-common/common_host_interface.cpp index 6d7b197d7..cf121d60f 100644 --- a/src/frontend-common/common_host_interface.cpp +++ b/src/frontend-common/common_host_interface.cpp @@ -87,18 +87,10 @@ void CommonHostInterface::Shutdown() { HostInterface::Shutdown(); - // this has gpu objects so it has to come first - m_save_state_selector_ui.reset(); - #ifdef WITH_DISCORD_PRESENCE ShutdownDiscordPresence(); #endif - System::Shutdown(); - m_audio_stream.reset(); - if (m_display) - ReleaseHostDisplay(); - if (m_controller_interface) { m_controller_interface->Shutdown(); @@ -177,6 +169,7 @@ void CommonHostInterface::PauseSystem(bool paused) void CommonHostInterface::DestroySystem() { SetTimerResolutionIncreased(false); + m_save_state_selector_ui->Close(); HostInterface::DestroySystem(); } diff --git a/src/frontend-common/save_state_selector_ui.cpp b/src/frontend-common/save_state_selector_ui.cpp index bf63044e9..4271b8fe8 100644 --- a/src/frontend-common/save_state_selector_ui.cpp +++ b/src/frontend-common/save_state_selector_ui.cpp @@ -31,6 +31,7 @@ void SaveStateSelectorUI::Close() return; m_open = false; + ClearList(); } void SaveStateSelectorUI::ClearList()