summaryrefslogtreecommitdiffstats
path: root/src/citra_qt/bootmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/citra_qt/bootmanager.h')
-rw-r--r--src/citra_qt/bootmanager.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/citra_qt/bootmanager.h b/src/citra_qt/bootmanager.h
index d5d74c949..16809eaae 100644
--- a/src/citra_qt/bootmanager.h
+++ b/src/citra_qt/bootmanager.h
@@ -3,6 +3,8 @@
// Refer to the license.txt file included.
#include <atomic>
+#include <condition_variable>
+#include <mutex>
#include <QThread>
#include <QGLWidget>
@@ -40,7 +42,12 @@ public:
* @param running Boolean value, set the emulation thread to running if true
* @note This function is thread-safe
*/
- void SetRunning(bool running) { this->running = running; }
+ void SetRunning(bool running) {
+ std::unique_lock<std::mutex> lock(running_mutex);
+ this->running = running;
+ lock.unlock();
+ running_cv.notify_all();
+ }
/**
* Check if the emulation thread is running or not
@@ -54,13 +61,15 @@ public:
*/
void RequestStop() {
stop_run = true;
- running = false;
+ SetRunning(false);
};
private:
bool exec_step;
bool running;
std::atomic<bool> stop_run;
+ std::mutex running_mutex;
+ std::condition_variable running_cv;
GRenderWindow* render_window;