From 1975efaeea0cc43926dc0c9ddf6e127b2914865d Mon Sep 17 00:00:00 2001 From: StapleButter Date: Sun, 1 Oct 2017 03:19:39 +0200 Subject: [PATCH] fix bugs with SPI shutdown --- src/NDS.cpp | 1 + src/libui_sdl/Platform.cpp | 4 ++-- src/libui_sdl/main.cpp | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/NDS.cpp b/src/NDS.cpp index 3ebaf442..cd762d7e 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -346,6 +346,7 @@ void Reset() void Stop() { printf("Stopping: shutdown\n"); + Running = false; Platform::StopEmu(); GPU::Stop(); SPU::Stop(); diff --git a/src/libui_sdl/Platform.cpp b/src/libui_sdl/Platform.cpp index cebc74d5..0b1e0a2d 100644 --- a/src/libui_sdl/Platform.cpp +++ b/src/libui_sdl/Platform.cpp @@ -44,7 +44,7 @@ #endif -void Stop(); +void Stop(bool internal); namespace Platform @@ -75,7 +75,7 @@ u8 PacketBuffer[2048]; void StopEmu() { - Stop(); + Stop(true); } diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index f27c7eda..241d9b76 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -320,10 +320,11 @@ void Run() uiMenuItemSetChecked(MenuItem_Pause, 0); } -void Stop() +void Stop(bool internal) { EmuRunning = 2; - while (EmuStatus != 2); + if (!internal) // if shutting down from the UI thread, wait till the emu thread has stopped + while (EmuStatus != 2); RunningSomething = false; uiMenuItemDisable(MenuItem_Pause); @@ -449,7 +450,7 @@ void OnStop(uiMenuItem* item, uiWindow* window, void* blarg) { if (!RunningSomething) return; - Stop(); + Stop(false); } void OnOpenEmuSettings(uiMenuItem* item, uiWindow* window, void* blarg)