aboutsummaryrefslogtreecommitdiffstats
path: root/alc/context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/context.cpp')
-rw-r--r--alc/context.cpp7
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);
}