From 333fe9a561c6de59322d3549b7577e2a32dcd511 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sun, 15 Nov 2020 04:40:44 +0300 Subject: [PATCH] atomic.cpp: fix notification on windows --- rpcs3/util/atomic.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/rpcs3/util/atomic.cpp b/rpcs3/util/atomic.cpp index 79d47b1fd8..60213df464 100644 --- a/rpcs3/util/atomic.cpp +++ b/rpcs3/util/atomic.cpp @@ -569,22 +569,21 @@ cond_alloc(std::uintptr_t iptr, __m128i mask) continue; } - // Initialize new "semaphore" - s_cond_list[id].mask = mask; - s_cond_list[id].init(iptr); - // Update some stats - s_cond_max.fetch_op([i](u32& val) + s_cond_max.fetch_op([group](u32& val) { - if (val < i) + if (val < group) [[unlikely]] { - val = i; + val = group; return true; } return false; }); + // Initialize new "semaphore" + s_cond_list[id].mask = mask; + s_cond_list[id].init(iptr); return id; } } @@ -1176,6 +1175,11 @@ atomic_wait_engine::wait(const void* data, u32 size, __m128i old_value, u64 time { if (!cond->set_sleep()) { + if (cond->sync == 3) + { + break; + } + fallback = false; break; }