diff options
Diffstat (limited to 'alc/effects/echo.cpp')
-rw-r--r-- | alc/effects/echo.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/alc/effects/echo.cpp b/alc/effects/echo.cpp index 6368718a..e14dc5cb 100644 --- a/alc/effects/echo.cpp +++ b/alc/effects/echo.cpp @@ -57,14 +57,14 @@ struct EchoState final : public EffectState { alignas(16) float mTempBuffer[2][BUFFERSIZE]; - bool deviceUpdate(const ALCdevice *device) override; + void deviceUpdate(const ALCdevice *device) override; void update(const ALCcontext *context, const ALeffectslot *slot, const EffectProps *props, const EffectTarget target) override; void process(const size_t samplesToDo, const al::span<const FloatBufferLine> samplesIn, const al::span<FloatBufferLine> samplesOut) override; DEF_NEWDEL(EchoState) }; -bool EchoState::deviceUpdate(const ALCdevice *Device) +void EchoState::deviceUpdate(const ALCdevice *Device) { const auto frequency = static_cast<float>(Device->Frequency); @@ -73,10 +73,7 @@ bool EchoState::deviceUpdate(const ALCdevice *Device) const ALuint maxlen{NextPowerOf2(float2uint(AL_ECHO_MAX_DELAY*frequency + 0.5f) + float2uint(AL_ECHO_MAX_LRDELAY*frequency + 0.5f))}; if(maxlen != mSampleBuffer.size()) - { - mSampleBuffer.resize(maxlen); - mSampleBuffer.shrink_to_fit(); - } + al::vector<float,16>(maxlen).swap(mSampleBuffer); std::fill(mSampleBuffer.begin(), mSampleBuffer.end(), 0.0f); for(auto &e : mGains) @@ -84,8 +81,6 @@ bool EchoState::deviceUpdate(const ALCdevice *Device) std::fill(std::begin(e.Current), std::end(e.Current), 0.0f); std::fill(std::begin(e.Target), std::end(e.Target), 0.0f); } - - return true; } void EchoState::update(const ALCcontext *context, const ALeffectslot *slot, const EffectProps *props, const EffectTarget target) |