mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-16 03:38:38 +12:00
atomic.hpp: fixup for atomic waiting
This commit is contained in:
parent
feee3838eb
commit
74471e8ea3
1 changed files with 7 additions and 2 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue