mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
atomic.hpp: fixup for atomic waiting
This commit is contained in:
parent
feee3838eb
commit
74471e8ea3
@ -258,15 +258,20 @@ void atomic_storage_futex::wait(const void* data, std::size_t size, u64 old_valu
|
|||||||
{
|
{
|
||||||
if (value & s_waiter_mask)
|
if (value & s_waiter_mask)
|
||||||
{
|
{
|
||||||
value -= s_waiter_mask & -s_waiter_mask;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (!fallback)
|
if (!fallback)
|
||||||
{
|
{
|
||||||
|
if ((value & s_signal_mask) == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
value -= s_signal_mask & -s_signal_mask;
|
value -= s_signal_mask & -s_signal_mask;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
value -= s_waiter_mask & -s_waiter_mask;
|
||||||
|
|
||||||
if ((value & s_waiter_mask) == 0)
|
if ((value & s_waiter_mask) == 0)
|
||||||
{
|
{
|
||||||
// Reset on last waiter
|
// Reset on last waiter
|
||||||
|
Loading…
x
Reference in New Issue
Block a user