From 604726c6392e6deefa9648ef6f8044ccf85ac1fa Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 21 May 2013 13:27:27 -0700 Subject: Add a DELETE macro to help destroy objects --- OpenAL32/Include/alMain.h | 3 +++ OpenAL32/alAuxEffectSlot.c | 13 +++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'OpenAL32') diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index fc078175..c7ad6418 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -70,6 +70,9 @@ static const union { #define SET_VTABLE1(T1, obj) ((obj)->vtbl = &(T1##_vtable)) #define SET_VTABLE2(T1, T2, obj) SET_VTABLE1(T1##_##T2, STATIC_CAST(T2, (obj))) +#define NEW(T) (T##Factory_getFactory()->create()) +#define DELETE(obj) ((obj)->vtbl->getCreator()->vtbl->destroy((obj))) + #ifdef _WIN32 diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c index 4003d440..42f6c103 100644 --- a/OpenAL32/alAuxEffectSlot.c +++ b/OpenAL32/alAuxEffectSlot.c @@ -74,8 +74,7 @@ AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslo if(err != AL_NO_ERROR) { FreeThunkEntry(slot->id); - ALeffectStateFactory_destroy(ALeffectState_getCreator(slot->EffectState), - slot->EffectState); + DELETE(slot->EffectState); al_free(slot); alDeleteAuxiliaryEffectSlots(cur, effectslots); @@ -124,8 +123,7 @@ AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint * FreeThunkEntry(slot->id); RemoveEffectSlotArray(Context, slot); - ALeffectStateFactory_destroy(ALeffectState_getCreator(slot->EffectState), - slot->EffectState); + DELETE(slot->EffectState); memset(slot, 0, sizeof(*slot)); al_free(slot); @@ -598,7 +596,7 @@ ALenum InitializeEffect(ALCdevice *Device, ALeffectslot *EffectSlot, ALeffect *e { ALCdevice_Unlock(Device); RestoreFPUMode(&oldMode); - ALeffectStateFactory_destroy(ALeffectState_getCreator(State), State); + DELETE(State); return AL_OUT_OF_MEMORY; } @@ -617,7 +615,7 @@ ALenum InitializeEffect(ALCdevice *Device, ALeffectslot *EffectSlot, ALeffect *e RestoreFPUMode(&oldMode); - ALeffectStateFactory_destroy(ALeffectState_getCreator(State), State); + DELETE(State); State = NULL; } else @@ -667,8 +665,7 @@ ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *Context) ALeffectslot *temp = Context->EffectSlotMap.array[pos].value; Context->EffectSlotMap.array[pos].value = NULL; - ALeffectStateFactory_destroy(ALeffectState_getCreator(temp->EffectState), - temp->EffectState); + DELETE(temp->EffectState); FreeThunkEntry(temp->id); memset(temp, 0, sizeof(ALeffectslot)); -- cgit v1.2.3