From 9bb278b166d42e53470aeab4c2bb6b26c3708712 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 6 Sep 2020 21:03:27 +1000 Subject: [PATCH] CommonHostInterface: Fix crash on shutdown when using save state selector --- src/core/host_interface.cpp | 6 +++++- src/frontend-common/common_host_interface.cpp | 9 +-------- src/frontend-common/save_state_selector_ui.cpp | 1 + 3 files changed, 7 insertions(+), 9 deletions(-) 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()