|
|
@@ -96,9 +96,9 @@ void EmuThread::run() {
|
|
|
m_is_running.store(false);
|
|
|
m_is_running.notify_all();
|
|
|
|
|
|
- emit DebugModeEntered();
|
|
|
+ EmulationPaused(lk);
|
|
|
Common::CondvarWait(m_should_run_cv, lk, stop_token, [&] { return m_should_run; });
|
|
|
- emit DebugModeLeft();
|
|
|
+ EmulationResumed(lk);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -111,6 +111,21 @@ void EmuThread::run() {
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+// Unlock while emitting signals so that the main thread can
|
|
|
+// continue pumping events.
|
|
|
+
|
|
|
+void EmuThread::EmulationPaused(std::unique_lock<std::mutex>& lk) {
|
|
|
+ lk.unlock();
|
|
|
+ emit DebugModeEntered();
|
|
|
+ lk.lock();
|
|
|
+}
|
|
|
+
|
|
|
+void EmuThread::EmulationResumed(std::unique_lock<std::mutex>& lk) {
|
|
|
+ lk.unlock();
|
|
|
+ emit DebugModeLeft();
|
|
|
+ lk.lock();
|
|
|
+}
|
|
|
+
|
|
|
#ifdef HAS_OPENGL
|
|
|
class OpenGLSharedContext : public Core::Frontend::GraphicsContext {
|
|
|
public:
|