diff --git a/src/frontend/EmuThread.cpp b/src/frontend/EmuThread.cpp index 945c5e2f..552c7669 100644 --- a/src/frontend/EmuThread.cpp +++ b/src/frontend/EmuThread.cpp @@ -43,7 +43,7 @@ EmuThread::EmuThread(const std::shared_ptr &instance_, } }; - while (true) { + while (!isInterruptionRequested()) { if (!core.pause) { core.Run(settings.getVolumeL(), settings.getVolumeR()); if (core.render) { @@ -108,4 +108,7 @@ EmuThread::EmuThread(const std::shared_ptr &instance_, pif.UpdateAxis(0, n64::Controller::Axis::X, xclamped); } } + + SetRender(false); + Stop(); } diff --git a/src/frontend/KaizenQt.cpp b/src/frontend/KaizenQt.cpp index f61dc71a..50335231 100644 --- a/src/frontend/KaizenQt.cpp +++ b/src/frontend/KaizenQt.cpp @@ -60,9 +60,9 @@ void KaizenQt::LoadROM(const QString &fileName) noexcept { void KaizenQt::Quit() noexcept { if (emuThread) { - emuThread->SetRender(false); - emuThread->Stop(); - emuThread->quit(); + emuThread->requestInterruption(); + while (emuThread->isRunning()) + ; } QApplication::quit(); }