diff options
author | Chris Robinson <[email protected]> | 2013-10-07 14:49:36 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2013-10-07 14:49:36 -0700 |
commit | b42fcce014da2c866a3d64f8f4831baed2f46e6f (patch) | |
tree | 41b9df2f2e2f7465e5147aafaa8dcf3ba67fd6f5 /Alc/effects/modulator.c | |
parent | fc31a414732d1b45f69f66236bb52b8226762db5 (diff) |
Use inline initialization for effect state factory vtables
Diffstat (limited to 'Alc/effects/modulator.c')
-rw-r--r-- | Alc/effects/modulator.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/Alc/effects/modulator.c b/Alc/effects/modulator.c index 90fb50d3..4fdd1261 100644 --- a/Alc/effects/modulator.c +++ b/Alc/effects/modulator.c @@ -30,13 +30,6 @@ #include "alu.h" -typedef struct ALmodulatorStateFactory { - DERIVE_FROM_TYPE(ALeffectStateFactory); -} ALmodulatorStateFactory; - -static ALmodulatorStateFactory ModulatorFactory; - - typedef struct ALmodulatorState { DERIVE_FROM_TYPE(ALeffectState); @@ -187,6 +180,10 @@ static void ALmodulatorState_Delete(ALmodulatorState *state) DEFINE_ALEFFECTSTATE_VTABLE(ALmodulatorState); +typedef struct ALmodulatorStateFactory { + DERIVE_FROM_TYPE(ALeffectStateFactory); +} ALmodulatorStateFactory; + static ALeffectState *ALmodulatorStateFactory_create(ALmodulatorStateFactory *UNUSED(factory)) { ALmodulatorState *state; @@ -205,16 +202,10 @@ static ALeffectState *ALmodulatorStateFactory_create(ALmodulatorStateFactory *UN DEFINE_ALEFFECTSTATEFACTORY_VTABLE(ALmodulatorStateFactory); - -static void init_modulator_factory(void) -{ - SET_VTABLE2(ALmodulatorStateFactory, ALeffectStateFactory, &ModulatorFactory); -} - ALeffectStateFactory *ALmodulatorStateFactory_getFactory(void) { - static pthread_once_t once = PTHREAD_ONCE_INIT; - pthread_once(&once, init_modulator_factory); + static ALmodulatorStateFactory ModulatorFactory = { { GET_VTABLE2(ALmodulatorStateFactory, ALeffectStateFactory) } }; + return STATIC_CAST(ALeffectStateFactory, &ModulatorFactory); } |