Cleanup the ALeffectStateFactory_create methods
Get rid of the ALeffectStateFactory_create macro, and use the VCALL_NOARGS helper (requires adding the 'this' factory parameter).
This commit is contained in:
@@ -251,9 +251,10 @@ static void ALchorusState_Delete(ALchorusState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALchorusState);
|
||||
|
||||
|
||||
static ALeffectState *ALchorusStateFactory_create(void)
|
||||
static ALeffectState *ALchorusStateFactory_create(ALchorusStateFactory *factory)
|
||||
{
|
||||
ALchorusState *state;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -93,10 +93,11 @@ static void ALdedicatedState_Delete(ALdedicatedState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALdedicatedState);
|
||||
|
||||
|
||||
ALeffectState *ALdedicatedStateFactory_create(void)
|
||||
ALeffectState *ALdedicatedStateFactory_create(ALdedicatedStateFactory *factory)
|
||||
{
|
||||
ALdedicatedState *state;
|
||||
ALsizei s;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -242,9 +242,10 @@ static void ALdistortionState_Delete(ALdistortionState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALdistortionState);
|
||||
|
||||
|
||||
static ALeffectState *ALdistortionStateFactory_create(void)
|
||||
static ALeffectState *ALdistortionStateFactory_create(ALdistortionStateFactory *factory)
|
||||
{
|
||||
ALdistortionState *state;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
+2
-1
@@ -183,9 +183,10 @@ static void ALechoState_Delete(ALechoState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALechoState);
|
||||
|
||||
|
||||
ALeffectState *ALechoStateFactory_create(void)
|
||||
ALeffectState *ALechoStateFactory_create(ALechoStateFactory *factory)
|
||||
{
|
||||
ALechoState *state;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -284,10 +284,11 @@ static void ALequalizerState_Delete(ALequalizerState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALequalizerState);
|
||||
|
||||
|
||||
ALeffectState *ALequalizerStateFactory_create(void)
|
||||
ALeffectState *ALequalizerStateFactory_create(ALequalizerStateFactory *factory)
|
||||
{
|
||||
ALequalizerState *state;
|
||||
int it;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -251,9 +251,10 @@ static void ALflangerState_Delete(ALflangerState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALflangerState);
|
||||
|
||||
|
||||
ALeffectState *ALflangerStateFactory_create(void)
|
||||
ALeffectState *ALflangerStateFactory_create(ALflangerStateFactory *factory)
|
||||
{
|
||||
ALflangerState *state;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -205,9 +205,10 @@ static void ALmodulatorState_Delete(ALmodulatorState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALmodulatorState);
|
||||
|
||||
|
||||
static ALeffectState *ALmodulatorStateFactory_create(void)
|
||||
static ALeffectState *ALmodulatorStateFactory_create(ALmodulatorStateFactory *factory)
|
||||
{
|
||||
ALmodulatorState *state;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
+2
-1
@@ -71,9 +71,10 @@ DEFINE_ALEFFECTSTATE_VTABLE(ALnullState);
|
||||
|
||||
|
||||
/* Creates ALeffectState objects of the appropriate type. */
|
||||
ALeffectState *ALnullStateFactory_create(void)
|
||||
ALeffectState *ALnullStateFactory_create(ALnullStateFactory *factory)
|
||||
{
|
||||
ALnullState *state;
|
||||
(void)factory;
|
||||
|
||||
state = calloc(1, sizeof(*state));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -1182,10 +1182,11 @@ static void ALreverbState_Delete(ALreverbState *state)
|
||||
DEFINE_ALEFFECTSTATE_VTABLE(ALreverbState);
|
||||
|
||||
|
||||
static ALeffectState *ALreverbStateFactory_create(void)
|
||||
static ALeffectState *ALreverbStateFactory_create(ALreverbStateFactory *factory)
|
||||
{
|
||||
ALreverbState *state;
|
||||
ALuint index;
|
||||
(void)factory;
|
||||
|
||||
state = malloc(sizeof(ALreverbState));
|
||||
if(!state) return NULL;
|
||||
|
||||
@@ -48,18 +48,16 @@ static const struct ALeffectStateVtable T##_ALeffectState_vtable = { \
|
||||
|
||||
|
||||
struct ALeffectStateFactoryVtable {
|
||||
ALeffectState *(*const create)(void);
|
||||
ALeffectState *(*const create)(ALeffectStateFactory *factory);
|
||||
};
|
||||
|
||||
struct ALeffectStateFactory {
|
||||
const struct ALeffectStateFactoryVtable *vtbl;
|
||||
};
|
||||
|
||||
#define ALeffectStateFactory_create(p) ((p)->vtbl->create())
|
||||
|
||||
#define DEFINE_ALEFFECTSTATEFACTORY_VTABLE(T) \
|
||||
static ALeffectState* T##_ALeffectStateFactory_create(void) \
|
||||
{ return T##_create(); } \
|
||||
static ALeffectState* T##_ALeffectStateFactory_create(ALeffectStateFactory *factory) \
|
||||
{ return T##_create(STATIC_UPCAST(T, ALeffectStateFactory, factory)); } \
|
||||
\
|
||||
static const struct ALeffectStateFactoryVtable T##_ALeffectStateFactory_vtable = { \
|
||||
T##_ALeffectStateFactory_create, \
|
||||
|
||||
@@ -486,7 +486,7 @@ ALenum InitializeEffect(ALCdevice *Device, ALeffectslot *EffectSlot, ALeffect *e
|
||||
ERR("Failed to find factory for effect type 0x%04x\n", newtype);
|
||||
return AL_INVALID_ENUM;
|
||||
}
|
||||
State = ALeffectStateFactory_create(factory);
|
||||
State = VCALL_NOARGS(factory,create);
|
||||
if(!State)
|
||||
return AL_OUT_OF_MEMORY;
|
||||
|
||||
@@ -548,7 +548,7 @@ ALenum InitEffectSlot(ALeffectslot *slot)
|
||||
slot->EffectType = AL_EFFECT_NULL;
|
||||
|
||||
factory = getFactoryByType(AL_EFFECT_NULL);
|
||||
if(!(slot->EffectState=ALeffectStateFactory_create(factory)))
|
||||
if(!(slot->EffectState=VCALL_NOARGS(factory,create)))
|
||||
return AL_OUT_OF_MEMORY;
|
||||
|
||||
slot->Gain = 1.0;
|
||||
|
||||
Reference in New Issue
Block a user