From c9537abfb1a9d1c94d6bf9aa0e6cfa2cda1ae94b Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 17 Dec 2021 04:07:00 -0800 Subject: Allocate voice properties in clusters --- al/source.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'al/source.cpp') diff --git a/al/source.cpp b/al/source.cpp index 4a2aaf35..cf95f7a4 100644 --- a/al/source.cpp +++ b/al/source.cpp @@ -100,15 +100,15 @@ void UpdateSourceProps(const ALsource *source, Voice *voice, ALCcontext *context /* Get an unused property container, or allocate a new one as needed. */ VoicePropsItem *props{context->mFreeVoiceProps.load(std::memory_order_acquire)}; if(!props) - props = new VoicePropsItem{}; - else { - VoicePropsItem *next; - do { - next = props->next.load(std::memory_order_relaxed); - } while(context->mFreeVoiceProps.compare_exchange_weak(props, next, - std::memory_order_acq_rel, std::memory_order_acquire) == 0); + context->allocVoiceProps(); + props = context->mFreeVoiceProps.load(std::memory_order_acquire); } + VoicePropsItem *next; + do { + next = props->next.load(std::memory_order_relaxed); + } while(unlikely(context->mFreeVoiceProps.compare_exchange_weak(props, next, + std::memory_order_acq_rel, std::memory_order_acquire) == false)); props->Pitch = source->Pitch; props->Gain = source->Gain; -- cgit v1.2.3