gsframe: Break waiting is emulator is stopped suddenly

- Keeps the queue from hanging the GUI
This commit is contained in:
kd-11 2017-10-28 19:05:46 +03:00
parent ce2b790d8f
commit 395b4bfa45
1 changed files with 3 additions and 3 deletions

View File

@ -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<std::mutex> 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