Change the static silent wavetable into a functionThe previous form tripped the leak detector

This commit is contained in:
Paul Ferrand 2020-03-28 21:11:30 +01:00
parent fbf2785211
commit 9d8bfa5b82
2 changed files with 7 additions and 9 deletions

View file

@ -11,12 +11,10 @@
namespace sfz {
static WavetableMulti silenceMulti = WavetableMulti::createSilence();
void WavetableOscillator::init(double sampleRate)
{
_sampleInterval = 1.0 / sampleRate;
_multi = &silenceMulti;
_multi = WavetableMulti::getSilenceWavetable();
clear();
}
@ -27,7 +25,7 @@ void WavetableOscillator::clear()
void WavetableOscillator::setWavetable(const WavetableMulti* wave)
{
_multi = wave ? wave : &silenceMulti;
_multi = wave ? wave : WavetableMulti::getSilenceWavetable();
}
void WavetableOscillator::setPhase(float phase)
@ -252,12 +250,12 @@ WavetableMulti WavetableMulti::createForHarmonicProfile(
return wm;
}
WavetableMulti WavetableMulti::createSilence()
WavetableMulti* WavetableMulti::getSilenceWavetable()
{
WavetableMulti wm;
static WavetableMulti wm;
wm.allocateStorage(1);
wm.fillExtra();
return wm;
return &wm;
}
void WavetableMulti::allocateStorage(unsigned tableSize)

View file

@ -159,8 +159,8 @@ public:
static WavetableMulti createForHarmonicProfile(
const HarmonicProfile& hp, double amplitude, unsigned tableSize = config::tableSize, double refSampleRate = 44100.0);
// create the tiniest wavetable with null content for use with oscillators
static WavetableMulti createSilence();
// get a tiny silent wavetable with null content for use with oscillators
static WavetableMulti* getSilenceWavetable();
private:
// get a pointer to the beginning of the N-th table