diff --git a/alc/alcmain.h b/alc/alcmain.h index a5dc655b..9e6dd35c 100644 --- a/alc/alcmain.h +++ b/alc/alcmain.h @@ -130,11 +130,13 @@ public: }; private: + using FloatArray = al::FlexArray; std::array mChannels; - al::vector mSamples; + std::unique_ptr mSamples; public: - void setSampleCount(size_t new_size) { mSamples.resize(new_size); } + void setSampleCount(size_t new_size) + { mSamples = FloatArray::Create(new_size); } void clear() noexcept { for(auto &chan : mChannels) @@ -143,11 +145,10 @@ public: chan.Length = 0; chan.Buffer = nullptr; } - using SampleVecT = decltype(mSamples); - SampleVecT{}.swap(mSamples); + mSamples = nullptr; } - float *getSamples() noexcept { return mSamples.data(); } + float *getSamples() noexcept { return mSamples->data(); } al::span as_span() { return mChannels; } };