diff options
author | Chris Robinson <[email protected]> | 2021-12-17 04:25:46 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2021-12-17 04:25:46 -0800 |
commit | fbc42aad7e70131655387c06092f8cbbc286c0db (patch) | |
tree | cee69893b06538e2ae45536cd122bb9898463858 /alc/context.cpp | |
parent | 3ed913f6dde4340325079a9c6d14e69c9731e11a (diff) |
Move some ContextBase function definitions to the right place
Diffstat (limited to 'alc/context.cpp')
-rw-r--r-- | alc/context.cpp | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/alc/context.cpp b/alc/context.cpp index 0b6bd022..af78603a 100644 --- a/alc/context.cpp +++ b/alc/context.cpp @@ -171,70 +171,6 @@ ContextBase::~ContextBase() } } -void ContextBase::allocVoiceChanges() -{ - constexpr size_t clustersize{128}; - - VoiceChangeCluster cluster{std::make_unique<VoiceChange[]>(clustersize)}; - for(size_t i{1};i < clustersize;++i) - cluster[i-1].mNext.store(std::addressof(cluster[i]), std::memory_order_relaxed); - cluster[clustersize-1].mNext.store(mVoiceChangeTail, std::memory_order_relaxed); - - mVoiceChangeClusters.emplace_back(std::move(cluster)); - mVoiceChangeTail = mVoiceChangeClusters.back().get(); -} - -void ContextBase::allocVoiceProps() -{ - constexpr size_t clustersize{32}; - - TRACE("Increasing allocated voice properties to %zu\n", - (mVoicePropClusters.size()+1) * clustersize); - - VoicePropsCluster cluster{std::make_unique<VoicePropsItem[]>(clustersize)}; - for(size_t i{1};i < clustersize;++i) - cluster[i-1].next.store(std::addressof(cluster[i]), std::memory_order_relaxed); - mVoicePropClusters.emplace_back(std::move(cluster)); - - VoicePropsItem *oldhead{mFreeVoiceProps.load(std::memory_order_acquire)}; - do { - mVoicePropClusters.back()[clustersize-1].next.store(oldhead, std::memory_order_relaxed); - } while(mFreeVoiceProps.compare_exchange_weak(oldhead, mVoicePropClusters.back().get(), - std::memory_order_acq_rel, std::memory_order_acquire) == false); -} - -void ContextBase::allocVoices(size_t addcount) -{ - constexpr size_t clustersize{32}; - /* Convert element count to cluster count. */ - addcount = (addcount+(clustersize-1)) / clustersize; - - if(addcount >= std::numeric_limits<int>::max()/clustersize - mVoiceClusters.size()) - throw std::runtime_error{"Allocating too many voices"}; - const size_t totalcount{(mVoiceClusters.size()+addcount) * clustersize}; - TRACE("Increasing allocated voices to %zu\n", totalcount); - - auto newarray = VoiceArray::Create(totalcount); - while(addcount) - { - mVoiceClusters.emplace_back(std::make_unique<Voice[]>(clustersize)); - --addcount; - } - - auto voice_iter = newarray->begin(); - for(VoiceCluster &cluster : mVoiceClusters) - { - for(size_t i{0};i < clustersize;++i) - *(voice_iter++) = &cluster[i]; - } - - if(auto *oldvoices = mVoices.exchange(newarray.release(), std::memory_order_acq_rel)) - { - mDevice->waitForMix(); - delete oldvoices; - } -} - ALCcontext::ALCcontext(al::intrusive_ptr<ALCdevice> device) : ContextBase{device.get()}, mALDevice{std::move(device)} |