diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp index 9d36364dd..fa7bce466 100644 --- a/src/citra_qt/bootmanager.cpp +++ b/src/citra_qt/bootmanager.cpp @@ -65,7 +65,7 @@ void EmuThread::run() { was_active = false; } else { std::unique_lock lock(running_mutex); - running_cv.wait(lock, [this]{ return IsRunning() || stop_run; }); + running_cv.wait(lock, [this]{ return IsRunning() || exec_step || stop_run; }); } } diff --git a/src/citra_qt/bootmanager.h b/src/citra_qt/bootmanager.h index 475124319..1a1e0e6a5 100644 --- a/src/citra_qt/bootmanager.h +++ b/src/citra_qt/bootmanager.h @@ -35,7 +35,10 @@ public: * Steps the emulation thread by a single CPU instruction (if the CPU is not already running) * @note This function is thread-safe */ - void ExecStep() { exec_step = true; } + void ExecStep() { + exec_step = true; + running_cv.notify_all(); + } /** * Sets whether the emulation thread is running or not