diff options
author | Chris Robinson <[email protected]> | 2018-11-18 02:52:46 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2018-11-18 02:52:46 -0800 |
commit | 310770c53125691135210d76128b5c76ea5a777a (patch) | |
tree | e66dd32762d3f1db5bdd85f766687fc4c7a93751 /OpenAL32 | |
parent | 3eededf5d64e197b1c1ed4be883efd0309ca00e0 (diff) |
Add and use new/delete operators to ALeffectslot
Diffstat (limited to 'OpenAL32')
-rw-r--r-- | OpenAL32/Include/alAuxEffectSlot.h | 7 | ||||
-rw-r--r-- | OpenAL32/alAuxEffectSlot.cpp | 17 |
2 files changed, 11 insertions, 13 deletions
diff --git a/OpenAL32/Include/alAuxEffectSlot.h b/OpenAL32/Include/alAuxEffectSlot.h index 99060b74..38900695 100644 --- a/OpenAL32/Include/alAuxEffectSlot.h +++ b/OpenAL32/Include/alAuxEffectSlot.h @@ -4,6 +4,7 @@ #include "alMain.h" #include "alEffect.h" +#include "almalloc.h" #include "atomic.h" #ifdef __cplusplus @@ -99,7 +100,7 @@ struct ALeffectslotProps { }; -typedef struct ALeffectslot { +struct ALeffectslot { ALfloat Gain; ALboolean AuxSendAuto; @@ -148,7 +149,9 @@ typedef struct ALeffectslot { * output (FOAOut). */ alignas(16) ALfloat WetBuffer[MAX_EFFECT_CHANNELS][BUFFERSIZE]; -} ALeffectslot; + + DEF_NEWDEL(ALeffectslot) +}; ALenum InitEffectSlot(ALeffectslot *slot); void DeinitEffectSlot(ALeffectslot *slot); diff --git a/OpenAL32/alAuxEffectSlot.cpp b/OpenAL32/alAuxEffectSlot.cpp index 119bb038..e67571a2 100644 --- a/OpenAL32/alAuxEffectSlot.cpp +++ b/OpenAL32/alAuxEffectSlot.cpp @@ -142,13 +142,11 @@ AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslo iter = context->EffectSlotList.end() - 1; } - ALenum err{AL_OUT_OF_MEMORY}; - auto slot = static_cast<ALeffectslot*>(al_calloc(16, sizeof(ALeffectslot))); - if(slot) slot = new (slot) ALeffectslot{}; - if(!slot || (err=InitEffectSlot(slot)) != AL_NO_ERROR) + auto slot = new ALeffectslot{}; + ALenum err{InitEffectSlot(slot)}; + if(err != AL_NO_ERROR) { - slot->~ALeffectslot(); - al_free(slot); + delete slot; UnlockEffectSlotList(context); alDeleteAuxiliaryEffectSlots(cur, effectslots); @@ -201,9 +199,7 @@ AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint * context->EffectSlotList[effectslots[i]-1] = nullptr; DeinitEffectSlot(slot); - - slot->~ALeffectslot(); - al_free(slot); + delete slot; } done: @@ -793,9 +789,8 @@ ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *context) entry = nullptr; DeinitEffectSlot(slot); + delete slot; - slot->~ALeffectslot(); - al_free(slot); ++leftover; } if(leftover > 0) |