diff options
Diffstat (limited to 'alc/context.cpp')
-rw-r--r-- | alc/context.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/alc/context.cpp b/alc/context.cpp index 456e42da..4d04526a 100644 --- a/alc/context.cpp +++ b/alc/context.cpp @@ -128,6 +128,9 @@ ALCcontext::~ALCcontext() eax_uninitialize(); #endif // ALSOFT_EAX + /* Delete the ALeffectslots, so the EffectSlots can be deleted before the + * WetBuffers are deleted. + */ mDefaultSlot = nullptr; count = std::accumulate(mEffectSlotList.cbegin(), mEffectSlotList.cend(), size_t{0u}, [](size_t cur, const EffectSlotSubList &sublist) noexcept -> size_t @@ -136,13 +139,15 @@ ALCcontext::~ALCcontext() WARN("%zu AuxiliaryEffectSlot%s not deleted\n", count, (count==1)?"":"s"); mEffectSlotList.clear(); mNumEffectSlots = 0; + + mEffectSlotClusters.clear(); } void ALCcontext::init() { if(sDefaultEffect.type != AL_EFFECT_NULL && mDevice->Type == DeviceType::Playback) { - mDefaultSlot = std::make_unique<ALeffectslot>(); + mDefaultSlot = std::make_unique<ALeffectslot>(this); aluInitEffectPanning(mDefaultSlot->mSlot, this); } |