aboutsummaryrefslogtreecommitdiffstats
path: root/al/state.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2024-01-03 14:12:28 -0800
committerChris Robinson <[email protected]>2024-01-03 14:12:28 -0800
commited98cbefd014a5166ec086fd276eb283cdab22aa (patch)
tree321f7efe504a010572c15277114883cc72cced34 /al/state.cpp
parentf8604758bc7cc43efa52a305a578ee9cf474f0d6 (diff)
Allocate context property updates in clusters
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;