diff options
author | Chris Robinson <[email protected]> | 2019-08-05 12:15:14 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2019-08-05 12:15:14 -0700 |
commit | d24401c3f3fbed3f0aa7fd5e4777e0d83797fa10 (patch) | |
tree | 292d6a7d4e928c70ee6785ece26d04bcb2d1b44b /al | |
parent | 3154a915b1f811416f3c29c6af0c0f13fc3acd3e (diff) |
Move the meters per unit property to the listener
Diffstat (limited to 'al')
-rw-r--r-- | al/listener.cpp | 10 | ||||
-rw-r--r-- | al/listener.h | 3 | ||||
-rw-r--r-- | al/state.cpp | 2 |
3 files changed, 7 insertions, 8 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; |