diff options
-rw-r--r-- | Alc/ALc.c | 13 | ||||
-rw-r--r-- | Alc/ALu.c | 16 |
2 files changed, 11 insertions, 18 deletions
@@ -2549,8 +2549,17 @@ static ALvoid InitContext(ALCcontext *Context) InitUIntMap(&Context->SourceMap, Context->Device->SourcesMax); InitUIntMap(&Context->EffectSlotMap, Context->Device->AuxiliaryEffectSlotMax); - auxslots = al_calloc(DEF_ALIGN, sizeof(struct ALeffectslotArray)); - auxslots->count = 0; + if(Context->DefaultSlot) + { + auxslots = al_calloc(DEF_ALIGN, FAM_SIZE(struct ALeffectslotArray, slot, 1)); + auxslots->count = 1; + auxslots->slot[0] = Context->DefaultSlot; + } + else + { + auxslots = al_calloc(DEF_ALIGN, sizeof(struct ALeffectslotArray)); + auxslots->count = 0; + } ATOMIC_INIT(&Context->ActiveAuxSlots, auxslots); //Set globals @@ -1633,14 +1633,6 @@ void aluMixData(ALCdevice *device, ALvoid *buffer, ALsizei size) { const struct ALeffectslotArray *auxslots; - if(ctx->DefaultSlot != NULL) - { - ALeffectslot *slot = ctx->DefaultSlot; - CalcEffectSlotParams(slot, device); - for(c = 0;c < slot->NumChannels;c++) - memset(slot->WetBuffer[c], 0, SamplesToDo*sizeof(ALfloat)); - } - auxslots = ATOMIC_LOAD(&ctx->ActiveAuxSlots, almemory_order_acquire); UpdateContextSources(ctx, auxslots); @@ -1676,14 +1668,6 @@ void aluMixData(ALCdevice *device, ALvoid *buffer, ALsizei size) state->OutChannels); } - if(ctx->DefaultSlot != NULL) - { - const ALeffectslot *slot = ctx->DefaultSlot; - ALeffectState *state = slot->Params.EffectState; - V(state,process)(SamplesToDo, slot->WetBuffer, state->OutBuffer, - state->OutChannels); - } - ctx = ctx->next; } |