From 9e5a388dfe2dbd5250f80675426c95a9bdade39c Mon Sep 17 00:00:00 2001 From: Chris Robinson <chris.kcat@gmail.com> Date: Mon, 24 Aug 2020 19:10:16 -0700 Subject: Add a method for effects to create persistent buffer data --- al/auxeffectslot.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'al/auxeffectslot.cpp') diff --git a/al/auxeffectslot.cpp b/al/auxeffectslot.cpp index bfacb290..88512bef 100644 --- a/al/auxeffectslot.cpp +++ b/al/auxeffectslot.cpp @@ -460,7 +460,14 @@ START_API_FUNC DecrementRef(oldbuffer->ref); slot->Buffer = buffer; - /* TODO: Create a shared effectstate representation of the buffer. */ + slot->Effect.Buffer = nullptr; + if(buffer) + { + FPUCtl mixer_mode{}; + auto *state = slot->Effect.State.get(); + slot->Effect.Buffer.reset(state->createBuffer(device, buffer->mData.data(), + buffer->Frequency, buffer->mFmtType, buffer->mFmtChannels, buffer->SampleLen)); + } } break; @@ -730,6 +737,10 @@ ALenum ALeffectslot::initEffect(ALeffect *effect, ALCcontext *context) { FPUCtl mixer_mode{}; State->deviceUpdate(Device); + Effect.Buffer = nullptr; + if(Buffer) + Effect.Buffer.reset(State->createBuffer(Device, Buffer->mData.data(), + Buffer->Frequency, Buffer->mFmtType, Buffer->mFmtChannels, Buffer->SampleLen)); } if(!effect) -- cgit v1.2.3