From 0d646011035bd0eb11ebdbb3259c01b5e2a5ac97 Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Wed, 4 Sep 2024 22:32:09 +0200 Subject: [PATCH] Thread interruption --- src/frontend/EmuThread.cpp | 5 ++++- src/frontend/KaizenQt.cpp | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) 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(); }