Return an intrusive_ptr from EffectStateFactory::create
This commit is contained in:
@@ -911,8 +911,7 @@ ALenum ALeffectslot::init()
|
||||
EffectStateFactory *factory{getFactoryByType(Effect.Type)};
|
||||
if(!factory) return AL_INVALID_VALUE;
|
||||
|
||||
Effect.State.reset(factory->create());
|
||||
if(!Effect.State) return AL_OUT_OF_MEMORY;
|
||||
Effect.State = factory->create();
|
||||
|
||||
Effect.State->add_ref();
|
||||
mSlot.mEffectState = Effect.State.get();
|
||||
|
||||
@@ -199,7 +199,8 @@ void AutowahState::process(const size_t samplesToDo,
|
||||
|
||||
|
||||
struct AutowahStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new AutowahState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new AutowahState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
+1
-1
@@ -180,7 +180,7 @@ struct EffectState : public al::intrusive_ref<EffectState> {
|
||||
struct EffectStateFactory {
|
||||
virtual ~EffectStateFactory() = default;
|
||||
|
||||
virtual EffectState *create() = 0;
|
||||
virtual al::intrusive_ptr<EffectState> create() = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -259,7 +259,8 @@ void ChorusState::process(const size_t samplesToDo, const al::span<const FloatBu
|
||||
|
||||
|
||||
struct ChorusStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ChorusState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ChorusState{}}; }
|
||||
};
|
||||
|
||||
|
||||
@@ -267,7 +268,8 @@ struct ChorusStateFactory final : public EffectStateFactory {
|
||||
* the same processing functions, so piggyback flanger on the chorus functions.
|
||||
*/
|
||||
struct FlangerStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ChorusState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ChorusState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -155,7 +155,8 @@ void CompressorState::process(const size_t samplesToDo,
|
||||
|
||||
|
||||
struct CompressorStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new CompressorState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new CompressorState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -539,7 +539,8 @@ void ConvolutionState::process(const size_t samplesToDo,
|
||||
|
||||
|
||||
struct ConvolutionStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ConvolutionState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ConvolutionState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -97,7 +97,8 @@ void DedicatedState::process(const size_t samplesToDo, const al::span<const Floa
|
||||
|
||||
|
||||
struct DedicatedStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new DedicatedState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new DedicatedState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -154,7 +154,8 @@ void DistortionState::process(const size_t samplesToDo, const al::span<const Flo
|
||||
|
||||
|
||||
struct DistortionStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new DistortionState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new DistortionState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -155,7 +155,8 @@ void EchoState::process(const size_t samplesToDo, const al::span<const FloatBuff
|
||||
|
||||
|
||||
struct EchoStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new EchoState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new EchoState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -171,7 +171,8 @@ void EqualizerState::process(const size_t samplesToDo, const al::span<const Floa
|
||||
|
||||
|
||||
struct EqualizerStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new EqualizerState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new EqualizerState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -219,7 +219,8 @@ void FshifterState::process(const size_t samplesToDo, const al::span<const Float
|
||||
|
||||
|
||||
struct FshifterStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new FshifterState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new FshifterState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -160,7 +160,8 @@ void ModulatorState::process(const size_t samplesToDo, const al::span<const Floa
|
||||
|
||||
|
||||
struct ModulatorStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ModulatorState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ModulatorState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -63,12 +63,12 @@ void NullState::process(const size_t/*samplesToDo*/,
|
||||
|
||||
|
||||
struct NullStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override;
|
||||
al::intrusive_ptr<EffectState> create() override;
|
||||
};
|
||||
|
||||
/* Creates EffectState objects of the appropriate type. */
|
||||
EffectState *NullStateFactory::create()
|
||||
{ return new NullState{}; }
|
||||
al::intrusive_ptr<EffectState> NullStateFactory::create()
|
||||
{ return al::intrusive_ptr<EffectState>{new NullState{}}; }
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -247,7 +247,8 @@ void PshifterState::process(const size_t samplesToDo, const al::span<const Float
|
||||
|
||||
|
||||
struct PshifterStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new PshifterState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new PshifterState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -1680,11 +1680,13 @@ void ReverbState::process(const size_t samplesToDo, const al::span<const FloatBu
|
||||
|
||||
|
||||
struct ReverbStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ReverbState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ReverbState{}}; }
|
||||
};
|
||||
|
||||
struct StdReverbStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new ReverbState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new ReverbState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -301,7 +301,8 @@ void VmorpherState::process(const size_t samplesToDo, const al::span<const Float
|
||||
|
||||
|
||||
struct VmorpherStateFactory final : public EffectStateFactory {
|
||||
EffectState *create() override { return new VmorpherState{}; }
|
||||
al::intrusive_ptr<EffectState> create() override
|
||||
{ return al::intrusive_ptr<EffectState>{new VmorpherState{}}; }
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user