aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-10-01 03:19:39 +0200
committerStapleButter <thetotalworm@gmail.com>2017-10-01 03:19:39 +0200
commit1975efaeea0cc43926dc0c9ddf6e127b2914865d (patch)
treec7b8cc91d2fcf9f19873f670c41b7641897f70e3 /src
parent9ad89d8cb5f3e1914bb008bd1a63733920c09e9b (diff)
fix bugs with SPI shutdown
Diffstat (limited to 'src')
-rw-r--r--src/NDS.cpp1
-rw-r--r--src/libui_sdl/Platform.cpp4
-rw-r--r--src/libui_sdl/main.cpp7
3 files changed, 7 insertions, 5 deletions
diff --git a/src/NDS.cpp b/src/NDS.cpp
index 3ebaf44..cd762d7 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 cebc74d..0b1e0a2 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 f27c7ed..241d9b7 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)