diff --git a/rpcs3/util/atomic.cpp b/rpcs3/util/atomic.cpp index a3472af4fb..bad35d71e7 100644 --- a/rpcs3/util/atomic.cpp +++ b/rpcs3/util/atomic.cpp @@ -258,15 +258,20 @@ void atomic_storage_futex::wait(const void* data, std::size_t size, u64 old_valu { if (value & s_waiter_mask) { - value -= s_waiter_mask & -s_waiter_mask; - #ifdef _WIN32 if (!fallback) { + if ((value & s_signal_mask) == 0) + { + return false; + } + value -= s_signal_mask & -s_signal_mask; } #endif + value -= s_waiter_mask & -s_waiter_mask; + if ((value & s_waiter_mask) == 0) { // Reset on last waiter