aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-08-13 22:06:14 -0700
committerChris Robinson <[email protected]>2019-08-13 22:06:14 -0700
commitecab99bce914c6c74351fb2d5878dd82d73b1fe2 (patch)
tree1bc8ed49ab939712abf3d0a079b96f9662b8beed
parent0806a003e2b359b173b84548d8b78a25e8b51ca3 (diff)
Move update pointers to the containers they update
-rw-r--r--al/auxeffectslot.cpp4
-rw-r--r--al/auxeffectslot.h4
-rw-r--r--al/listener.cpp2
-rw-r--r--al/listener.h9
-rw-r--r--alc/alc.cpp2
-rw-r--r--alc/alu.cpp4
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<ALeffectslotProps*> Update{nullptr};
-
struct {
+ std::atomic<ALeffectslotProps*> 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<ALlistenerProps*> Update{nullptr};
-
struct {
+ /* Pointer to the most recent property values that are awaiting an
+ * update.
+ */
+ std::atomic<ALlistenerProps*> 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;