From 74471e8ea3f6fdf506223db6f62919a0578f9e66 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 21 Sep 2019 14:02:13 +0300 Subject: [PATCH] atomic.hpp: fixup for atomic waiting --- rpcs3/util/atomic.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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