aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-08-05 12:15:14 -0700
committerChris Robinson <[email protected]>2019-08-05 12:15:14 -0700
commitd24401c3f3fbed3f0aa7fd5e4777e0d83797fa10 (patch)
tree292d6a7d4e928c70ee6785ece26d04bcb2d1b44b
parent3154a915b1f811416f3c29c6af0c0f13fc3acd3e (diff)
Move the meters per unit property to the listener
-rw-r--r--al/listener.cpp10
-rw-r--r--al/listener.h3
-rw-r--r--al/state.cpp2
-rw-r--r--alc/alc.cpp2
-rw-r--r--alc/alcontext.h2
-rw-r--r--alc/alu.cpp3
6 files changed, 9 insertions, 13 deletions
diff --git a/al/listener.cpp b/al/listener.cpp
index aebf2aa5..d2fb8807 100644
--- a/al/listener.cpp
+++ b/al/listener.cpp
@@ -62,11 +62,8 @@ START_API_FUNC
case AL_METERS_PER_UNIT:
if(!(value >= AL_MIN_METERS_PER_UNIT && value <= AL_MAX_METERS_PER_UNIT))
SETERR_RETURN(context, AL_INVALID_VALUE,, "Listener meters per unit out of range");
- context->mMetersPerUnit = value;
- if(!context->mDeferUpdates.load(std::memory_order_acquire))
- UpdateContextProps(context.get());
- else
- context->mPropsClean.clear(std::memory_order_release);
+ listener.mMetersPerUnit = value;
+ DO_UPDATEPROPS();
break;
default:
@@ -252,7 +249,7 @@ START_API_FUNC
break;
case AL_METERS_PER_UNIT:
- *value = context->mMetersPerUnit;
+ *value = listener.mMetersPerUnit;
break;
default:
@@ -439,6 +436,7 @@ void UpdateListenerProps(ALCcontext *context)
props->OrientAt = listener.OrientAt;
props->OrientUp = listener.OrientUp;
props->Gain = listener.Gain;
+ props->MetersPerUnit = listener.mMetersPerUnit;
/* Set the new container for updating internal parameters. */
props = listener.Update.exchange(props, std::memory_order_acq_rel);
diff --git a/al/listener.h b/al/listener.h
index 692880cd..094e3067 100644
--- a/al/listener.h
+++ b/al/listener.h
@@ -6,6 +6,7 @@
#include "AL/al.h"
#include "AL/alc.h"
+#include "AL/alext.h"
#include "vecmat.h"
@@ -18,6 +19,7 @@ struct ALlistenerProps {
std::array<ALfloat,3> OrientAt;
std::array<ALfloat,3> OrientUp;
ALfloat Gain;
+ ALfloat MetersPerUnit;
std::atomic<ALlistenerProps*> next;
};
@@ -28,6 +30,7 @@ struct ALlistener {
std::array<ALfloat,3> OrientAt{{0.0f, 0.0f, -1.0f}};
std::array<ALfloat,3> OrientUp{{0.0f, 1.0f, 0.0f}};
ALfloat Gain{1.0f};
+ ALfloat mMetersPerUnit{AL_DEFAULT_METERS_PER_UNIT};
std::atomic_flag PropsClean;
diff --git a/al/state.cpp b/al/state.cpp
index b0338296..cbfd12fe 100644
--- a/al/state.cpp
+++ b/al/state.cpp
@@ -836,8 +836,6 @@ void UpdateContextProps(ALCcontext *context)
}
/* Copy in current property values. */
- props->MetersPerUnit = context->mMetersPerUnit;
-
props->DopplerFactor = context->mDopplerFactor;
props->DopplerVelocity = context->mDopplerVelocity;
props->SpeedOfSound = context->mSpeedOfSound;
diff --git a/alc/alc.cpp b/alc/alc.cpp
index ca7ce4fb..143c2e4e 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -2445,7 +2445,7 @@ void ALCcontext::init()
mListener.Params.Matrix = alu::Matrix::Identity();
mListener.Params.Velocity = alu::Vector{};
mListener.Params.Gain = mListener.Gain;
- mListener.Params.MetersPerUnit = mMetersPerUnit;
+ mListener.Params.MetersPerUnit = mListener.mMetersPerUnit;
mListener.Params.DopplerFactor = mDopplerFactor;
mListener.Params.SpeedOfSound = mSpeedOfSound * mDopplerVelocity;
mListener.Params.SourceDistanceModel = mSourceDistanceModel;
diff --git a/alc/alcontext.h b/alc/alcontext.h
index 70215e9c..f30a4bd0 100644
--- a/alc/alcontext.h
+++ b/alc/alcontext.h
@@ -48,7 +48,6 @@ struct ALcontextProps {
ALfloat SpeedOfSound;
ALboolean SourceDistanceModel;
DistanceModel mDistanceModel;
- ALfloat MetersPerUnit;
std::atomic<ALcontextProps*> next;
};
@@ -102,7 +101,6 @@ struct ALCcontext : public al::intrusive_ref<ALCcontext> {
ALfloat mDopplerFactor{1.0f};
ALfloat mDopplerVelocity{1.0f};
ALfloat mSpeedOfSound{SPEEDOFSOUNDMETRESPERSEC};
- ALfloat mMetersPerUnit{AL_DEFAULT_METERS_PER_UNIT};
std::atomic_flag mPropsClean;
std::atomic<bool> mDeferUpdates{false};
diff --git a/alc/alu.cpp b/alc/alu.cpp
index 4044c712..f2c843fe 100644
--- a/alc/alu.cpp
+++ b/alc/alu.cpp
@@ -271,8 +271,6 @@ bool CalcContextParams(ALCcontext *Context)
if(!props) return false;
ALlistener &Listener = Context->mListener;
- Listener.Params.MetersPerUnit = props->MetersPerUnit;
-
Listener.Params.DopplerFactor = props->DopplerFactor;
Listener.Params.SpeedOfSound = props->SpeedOfSound * props->DopplerVelocity;
@@ -314,6 +312,7 @@ bool CalcListenerParams(ALCcontext *Context)
Listener.Params.Velocity = Listener.Params.Matrix * vel;
Listener.Params.Gain = props->Gain * Context->mGainBoost;
+ Listener.Params.MetersPerUnit = props->MetersPerUnit;
AtomicReplaceHead(Context->mFreeListenerProps, props);
return true;