diff options
author | Chris Robinson <[email protected]> | 2021-04-15 15:07:14 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2021-04-15 15:17:04 -0700 |
commit | 29cf7ebb752e00e116391a1df7a3ed0f49fdd193 (patch) | |
tree | 76b90d55cbcbae2bb3c04fc95aaef83161263ecc /al/auxeffectslot.cpp | |
parent | 92148a3a044389863601b8b907bcfc69ff77b869 (diff) |
Make an inverted atomic flag type and use it
The inverted atomic flag replaces test_and_set+clear with test_and_clear+set,
essentially inverting the flag status. This makes more logical sense for
flagging dirty state, which is less confusing than flagging clean state. The
one caveat is ATOMIC_FLAG_INIT (or default construction in C++20) initializes
the state to true rather than false.
Diffstat (limited to 'al/auxeffectslot.cpp')
-rw-r--r-- | al/auxeffectslot.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/al/auxeffectslot.cpp b/al/auxeffectslot.cpp index 4465e54e..7e12a070 100644 --- a/al/auxeffectslot.cpp +++ b/al/auxeffectslot.cpp @@ -308,7 +308,7 @@ void FreeEffectSlot(ALCcontext *context, ALeffectslot *slot) && slot->mState == SlotState::Playing) \ slot->updateProps(context.get()); \ else \ - slot->PropsClean.clear(std::memory_order_release); \ + slot->mPropsDirty.set(std::memory_order_release); \ } while(0) } // namespace @@ -460,7 +460,7 @@ START_API_FUNC if(slot->mState == SlotState::Playing) return; - slot->PropsClean.test_and_set(std::memory_order_acq_rel); + slot->mPropsDirty.test_and_clear(std::memory_order_acq_rel); slot->updateProps(context.get()); AddActiveEffectSlots({&slot, 1}, context.get()); @@ -491,7 +491,7 @@ START_API_FUNC if(slot->mState != SlotState::Playing) { - slot->PropsClean.test_and_set(std::memory_order_acq_rel); + slot->mPropsDirty.test_and_clear(std::memory_order_acq_rel); slot->updateProps(context.get()); } slots[i] = slot; @@ -884,7 +884,7 @@ END_API_FUNC ALeffectslot::ALeffectslot() { - PropsClean.test_and_set(std::memory_order_relaxed); + mPropsDirty.test_and_clear(std::memory_order_relaxed); EffectStateFactory *factory{getFactoryByType(EffectSlotType::None)}; assert(factory != nullptr); @@ -1004,7 +1004,7 @@ void UpdateAllEffectSlotProps(ALCcontext *context) usemask &= ~(1_u64 << idx); if(slot->mState != SlotState::Stopped - && !slot->PropsClean.test_and_set(std::memory_order_acq_rel)) + && slot->mPropsDirty.test_and_clear(std::memory_order_acq_rel)) slot->updateProps(context); } } |