From ba664b3293e88ddee94a4b922ced192f3270b569 Mon Sep 17 00:00:00 2001 From: comex Date: Mon, 13 Apr 2015 02:09:39 -0400 Subject: Join the emu thread in Core::Stop. Get rid of Core::Shutdown which did that before. Core::Shutdown was only called on app exit, yet the emu thread exits whenever emulation stops; if you launched a new game it would just join via the destructor when s_emu_thread was set to a new thread. (Incidentally, the destructor also makes explicitly joining on app exit rather pointless.) Because the GUI thread wasn't waiting for the CPU thread to fully shut down, Core::IsRunning would remain true briefly after CFrame::DoStop which, given Dolphin's penchant for accessing variables belonging to other threads, can only mean trouble... In my case, because the previous commit caused UpdateGUI, which is called at the end of DoStop, to call PauseAndLock, which checks IsRunning, pressing stop at the right time would cause strange behavior. --- Source/Core/DolphinWX/MainNoGUI.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'Source/Core/DolphinWX/MainNoGUI.cpp') diff --git a/Source/Core/DolphinWX/MainNoGUI.cpp b/Source/Core/DolphinWX/MainNoGUI.cpp index 7e072288fd..0cd7193d22 100644 --- a/Source/Core/DolphinWX/MainNoGUI.cpp +++ b/Source/Core/DolphinWX/MainNoGUI.cpp @@ -343,7 +343,6 @@ int main(int argc, char* argv[]) while (PowerPC::GetState() != PowerPC::CPU_POWERDOWN) updateMainFrameEvent.Wait(); - Core::Shutdown(); platform->Shutdown(); UICommon::Shutdown(); -- cgit v1.2.3