From ecab99bce914c6c74351fb2d5878dd82d73b1fe2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 13 Aug 2019 22:06:14 -0700 Subject: Move update pointers to the containers they update --- al/auxeffectslot.cpp | 4 ++-- al/auxeffectslot.h | 4 ++-- al/listener.cpp | 2 +- al/listener.h | 9 +++++---- alc/alc.cpp | 2 +- alc/alu.cpp | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/al/auxeffectslot.cpp b/al/auxeffectslot.cpp index a0b8840f..e2dccb4d 100644 --- a/al/auxeffectslot.cpp +++ b/al/auxeffectslot.cpp @@ -706,7 +706,7 @@ ALeffectslot::~ALeffectslot() DecrementRef(Target->ref); Target = nullptr; - ALeffectslotProps *props{Update.load()}; + ALeffectslotProps *props{Params.Update.load()}; if(props) { if(props->State) props->State->release(); @@ -750,7 +750,7 @@ void UpdateEffectSlotProps(ALeffectslot *slot, ALCcontext *context) props->State = slot->Effect.State; /* Set the new container for updating internal parameters. */ - props = slot->Update.exchange(props, std::memory_order_acq_rel); + props = slot->Params.Update.exchange(props, std::memory_order_acq_rel); if(props) { /* If there was an unused update container, put it back in the diff --git a/al/auxeffectslot.h b/al/auxeffectslot.h index 369638a0..9acb6d6b 100644 --- a/al/auxeffectslot.h +++ b/al/auxeffectslot.h @@ -51,9 +51,9 @@ struct ALeffectslot { RefCount ref{0u}; - std::atomic Update{nullptr}; - struct { + std::atomic Update{nullptr}; + ALfloat Gain{1.0f}; ALboolean AuxSendAuto{AL_TRUE}; ALeffectslot *Target{nullptr}; diff --git a/al/listener.cpp b/al/listener.cpp index 402d8a27..7a14a9ba 100644 --- a/al/listener.cpp +++ b/al/listener.cpp @@ -441,7 +441,7 @@ void UpdateListenerProps(ALCcontext *context) props->MetersPerUnit = listener.mMetersPerUnit; /* Set the new container for updating internal parameters. */ - props = listener.Update.exchange(props, std::memory_order_acq_rel); + props = listener.Params.Update.exchange(props, std::memory_order_acq_rel); if(props) { /* If there was an unused update container, put it back in the diff --git a/al/listener.h b/al/listener.h index 1b440bca..318ab024 100644 --- a/al/listener.h +++ b/al/listener.h @@ -37,11 +37,12 @@ struct ALlistener { std::atomic_flag PropsClean; - /* Pointer to the most recent property values that are awaiting an update. - */ - std::atomic Update{nullptr}; - struct { + /* Pointer to the most recent property values that are awaiting an + * update. + */ + std::atomic Update{nullptr}; + alu::Matrix Matrix; alu::Vector Velocity; diff --git a/alc/alc.cpp b/alc/alc.cpp index ca7dbb0f..baf31993 100644 --- a/alc/alc.cpp +++ b/alc/alc.cpp @@ -2382,7 +2382,7 @@ ALCcontext::~ALCcontext() mVoices = nullptr; mVoiceCount.store(0, std::memory_order_relaxed); - ALlistenerProps *lprops{mListener.Update.exchange(nullptr, std::memory_order_relaxed)}; + ALlistenerProps *lprops{mListener.Params.Update.exchange(nullptr, std::memory_order_relaxed)}; if(lprops) { TRACE("Freed unapplied listener update %p\n", lprops); diff --git a/alc/alu.cpp b/alc/alu.cpp index aebb2236..4a0ea8f9 100644 --- a/alc/alu.cpp +++ b/alc/alu.cpp @@ -286,7 +286,7 @@ bool CalcListenerParams(ALCcontext *Context) { ALlistener &Listener = Context->mListener; - ALlistenerProps *props{Listener.Update.exchange(nullptr, std::memory_order_acq_rel)}; + ALlistenerProps *props{Listener.Params.Update.exchange(nullptr, std::memory_order_acq_rel)}; if(!props) return false; /* AT then UP */ @@ -321,7 +321,7 @@ bool CalcListenerParams(ALCcontext *Context) bool CalcEffectSlotParams(ALeffectslot *slot, ALCcontext *context) { - ALeffectslotProps *props{slot->Update.exchange(nullptr, std::memory_order_acq_rel)}; + ALeffectslotProps *props{slot->Params.Update.exchange(nullptr, std::memory_order_acq_rel)}; if(!props) return false; slot->Params.Gain = props->Gain; -- cgit v1.2.3