aboutsummaryrefslogtreecommitdiffstats
path: root/al/state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'al/state.cpp')
-rw-r--r--al/state.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/al/state.cpp b/al/state.cpp
index d9c199d5..c1e3d593 100644
--- a/al/state.cpp
+++ b/al/state.cpp
@@ -643,18 +643,18 @@ AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value) noexcept
void UpdateContextProps(ALCcontext *context)
{
- /* Get an unused proprty container, or allocate a new one as needed. */
+ /* Get an unused property container, or allocate a new one as needed. */
ContextProps *props{context->mFreeContextProps.load(std::memory_order_acquire)};
if(!props)
- props = new ContextProps{};
- else
{
- ContextProps *next;
- do {
- next = props->next.load(std::memory_order_relaxed);
- } while(context->mFreeContextProps.compare_exchange_weak(props, next,
- std::memory_order_seq_cst, std::memory_order_acquire) == 0);
+ context->allocContextProps();
+ props = context->mFreeContextProps.load(std::memory_order_acquire);
}
+ ContextProps *next;
+ do {
+ next = props->next.load(std::memory_order_relaxed);
+ } while(context->mFreeContextProps.compare_exchange_weak(props, next,
+ std::memory_order_acq_rel, std::memory_order_acquire) == false);
/* Copy in current property values. */
ALlistener &listener = context->mListener;