diff options
author | Chris Robinson <[email protected]> | 2024-01-03 14:12:28 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2024-01-03 14:12:28 -0800 |
commit | ed98cbefd014a5166ec086fd276eb283cdab22aa (patch) | |
tree | 321f7efe504a010572c15277114883cc72cced34 /al/state.cpp | |
parent | f8604758bc7cc43efa52a305a578ee9cf474f0d6 (diff) |
Allocate context property updates in clusters
Diffstat (limited to 'al/state.cpp')
-rw-r--r-- | al/state.cpp | 16 |
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; |