aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2013-05-25 21:04:00 -0700
committerChris Robinson <[email protected]>2013-05-25 21:04:00 -0700
commit6571d805400f018b51835a8e37752409af9b1c4d (patch)
tree83cbbb263ca40d19fe25252c9d62400fc61d90c9 /OpenAL32
parent2da6caeaa61338ccbea9a7cbc022be932bb4e0e1 (diff)
Use a Delete method for deletable objects
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alAuxEffectSlot.h15
-rw-r--r--OpenAL32/Include/alMain.h5
2 files changed, 9 insertions, 11 deletions
diff --git a/OpenAL32/Include/alAuxEffectSlot.h b/OpenAL32/Include/alAuxEffectSlot.h
index ff88fe7b..d7062ff7 100644
--- a/OpenAL32/Include/alAuxEffectSlot.h
+++ b/OpenAL32/Include/alAuxEffectSlot.h
@@ -18,7 +18,8 @@ struct ALeffectStateVtable {
ALboolean (*const DeviceUpdate)(ALeffectState *state, ALCdevice *device);
ALvoid (*const Update)(ALeffectState *state, ALCdevice *device, const ALeffectslot *slot);
ALvoid (*const Process)(ALeffectState *state, ALuint samplesToDo, const ALfloat *restrict samplesIn, ALfloat (*restrict samplesOut)[BUFFERSIZE]);
- ALeffectStateFactory *(*const getCreator)(void);
+
+ void (*const Delete)(ALeffectState *state);
};
struct ALeffectState {
@@ -29,7 +30,6 @@ struct ALeffectState {
#define ALeffectState_DeviceUpdate(a,b) ((a)->vtbl->DeviceUpdate((a),(b)))
#define ALeffectState_Update(a,b,c) ((a)->vtbl->Update((a),(b),(c)))
#define ALeffectState_Process(a,b,c,d) ((a)->vtbl->Process((a),(b),(c),(d)))
-#define ALeffectState_getCreator(a) ((a)->vtbl->getCreator())
#define DEFINE_ALEFFECTSTATE_VTABLE(T) \
static ALvoid T##_ALeffectState_Destruct(ALeffectState *state) \
@@ -40,21 +40,20 @@ static ALvoid T##_ALeffectState_Update(ALeffectState *state, ALCdevice *device,
{ T##_Update(STATIC_UPCAST(T, ALeffectState, state), device, slot); } \
static ALvoid T##_ALeffectState_Process(ALeffectState *state, ALuint samplesToDo, const ALfloat *restrict samplesIn, ALfloat (*restrict samplesOut)[BUFFERSIZE]) \
{ T##_Process(STATIC_UPCAST(T, ALeffectState, state), samplesToDo, samplesIn, samplesOut); } \
-static ALeffectStateFactory* T##_ALeffectState_getCreator(void) \
-{ return T##_getCreator(); } \
+static ALvoid T##_ALeffectState_Delete(ALeffectState *state) \
+{ T##_Delete(STATIC_UPCAST(T, ALeffectState, state)); } \
\
static const struct ALeffectStateVtable T##_ALeffectState_vtable = { \
T##_ALeffectState_Destruct, \
T##_ALeffectState_DeviceUpdate, \
T##_ALeffectState_Update, \
T##_ALeffectState_Process, \
- T##_ALeffectState_getCreator, \
+ T##_ALeffectState_Delete, \
}
struct ALeffectStateFactoryVtable {
ALeffectState *(*const create)(void);
- ALvoid (*const destroy)(ALeffectState *state);
};
struct ALeffectStateFactory {
@@ -62,17 +61,13 @@ struct ALeffectStateFactory {
};
#define ALeffectStateFactory_create(p) ((p)->vtbl->create())
-#define ALeffectStateFactory_destroy(p,a) ((p)->vtbl->destroy((a)))
#define DEFINE_ALEFFECTSTATEFACTORY_VTABLE(T) \
static ALeffectState* T##_ALeffectStateFactory_create(void) \
{ return T##_create(); } \
-static ALvoid T##_ALeffectStateFactory_destroy(ALeffectState *state) \
-{ T##_destroy(state); } \
\
static const struct ALeffectStateFactoryVtable T##_ALeffectStateFactory_vtable = { \
T##_ALeffectStateFactory_create, \
- T##_ALeffectStateFactory_destroy \
}
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index ca0df2ad..a7c79b2a 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -70,7 +70,10 @@ 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 DELETE_OBJ(obj) ((obj)->vtbl->getCreator()->vtbl->destroy((obj)))
+#define DELETE_OBJ(obj) do { \
+ (obj)->vtbl->Destruct((obj)); \
+ (obj)->vtbl->Delete((obj)); \
+} while(0)
#ifdef _WIN32