diff --git a/src/frontend/qt_sdl/EmuInstance.cpp b/src/frontend/qt_sdl/EmuInstance.cpp index f4092b61..89d4108b 100644 --- a/src/frontend/qt_sdl/EmuInstance.cpp +++ b/src/frontend/qt_sdl/EmuInstance.cpp @@ -154,8 +154,6 @@ EmuInstance::~EmuInstance() deleting = true; deleteAllWindows(); - MPInterface::Get().End(instanceID); - emuThread->emuExit(); emuThread->wait(); delete emuThread; diff --git a/src/frontend/qt_sdl/EmuThread.cpp b/src/frontend/qt_sdl/EmuThread.cpp index 6417fa69..f767c6db 100644 --- a/src/frontend/qt_sdl/EmuThread.cpp +++ b/src/frontend/qt_sdl/EmuThread.cpp @@ -478,7 +478,8 @@ void EmuThread::waitMessage(int num) void EmuThread::waitAllMessages() { if (QThread::currentThread() == this) return; - msgSemaphore.acquire(msgSemaphore.available()); + while (!msgQueue.empty()) + msgSemaphore.acquire(); } void EmuThread::handleMessages() @@ -494,6 +495,7 @@ void EmuThread::handleMessages() emuPauseStack = emuPauseStackRunning; emuInstance->audioDisable(); + MPInterface::Get().End(emuInstance->instanceID); break; case msg_EmuRun: