From 395b4bfa457ec4072176c0f8a946bab45d048807 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sat, 28 Oct 2017 19:05:46 +0300 Subject: [PATCH] gsframe: Break waiting is emulator is stopped suddenly - Keeps the queue from hanging the GUI --- rpcs3/rpcs3qt/gs_frame.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/rpcs3qt/gs_frame.cpp b/rpcs3/rpcs3qt/gs_frame.cpp index 0b916672af..ed1b9b9313 100644 --- a/rpcs3/rpcs3qt/gs_frame.cpp +++ b/rpcs3/rpcs3qt/gs_frame.cpp @@ -246,10 +246,10 @@ bool gs_frame::event(QEvent* ev) bool gs_frame::nativeEvent(const QByteArray &eventType, void *message, long *result) { #ifdef _WIN32 - if (wm_event_queue_enabled.load(std::memory_order_consume)) + if (wm_event_queue_enabled.load(std::memory_order_consume) && !Emu.IsStopped()) { //Wait for consumer to clear notification pending flag - while (wm_event_raised.load(std::memory_order_consume)); + while (wm_event_raised.load(std::memory_order_consume) && !Emu.IsStopped()); { std::lock_guard lock(wm_event_lock); @@ -337,7 +337,7 @@ bool gs_frame::nativeEvent(const QByteArray &eventType, void *message, long *res } //Do not enter DefWndProc until the consumer has consumed the message - while (wm_event_raised.load(std::memory_order_consume)); + while (wm_event_raised.load(std::memory_order_consume) && !Emu.IsStopped()); } #endif