summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/yuzu/bootmanager.h11
-rw-r--r--src/yuzu/main.cpp6
2 files changed, 5 insertions, 12 deletions
diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h
index c2b127f19..f0edad6e4 100644
--- a/src/yuzu/bootmanager.h
+++ b/src/yuzu/bootmanager.h
@@ -11,7 +11,6 @@
#include <QImage>
#include <QStringList>
#include <QThread>
-#include <QTimer>
#include <QTouchEvent>
#include <QWidget>
@@ -85,17 +84,9 @@ public:
}
/**
- * Requests for the emulation thread to stop running
+ * Requests for the emulation thread to immediately stop running
*/
- void RequestStop() {
- QTimer::singleShot(5000, this, &EmuThread::ForceStop);
- }
-
-private slots:
void ForceStop() {
- if (!IsRunning()) {
- return;
- }
LOG_WARNING(Frontend, "Force stopping EmuThread");
stop_source.request_stop();
SetRunning(false);
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index b38957d9a..b3ae03eaf 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -1792,12 +1792,14 @@ void GMainWindow::ShutdownGame() {
discord_rpc->Pause();
RequestGameExit();
- emu_thread->RequestStop();
emit EmulationStopping();
// Wait for emulation thread to complete and delete it
- emu_thread->wait();
+ if (!emu_thread->wait(5000)) {
+ emu_thread->ForceStop();
+ emu_thread->wait();
+ }
emu_thread = nullptr;
emulation_running = false;