From cf2c04214b686ccb99897a9972a74bf2e24ed927 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 1 May 2020 04:57:25 +0200 Subject: [PATCH] SpectrumVis: release previous FFT engine allocation from FFT factory only if allocated once. Fixes issue #515 --- sdrbase/dsp/spectrumvis.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sdrbase/dsp/spectrumvis.cpp b/sdrbase/dsp/spectrumvis.cpp index ef5dc59cd..5f0778d7e 100644 --- a/sdrbase/dsp/spectrumvis.cpp +++ b/sdrbase/dsp/spectrumvis.cpp @@ -699,7 +699,12 @@ void SpectrumVis::applySettings(const GLSpectrumSettings& settings, bool force) if ((fftSize != m_settings.m_fftSize) || force) { FFTFactory *fftFactory = DSPEngine::instance()->getFFTFactory(); - fftFactory->releaseEngine(m_settings.m_fftSize, false, m_fftEngineSequence); + + // release previous engine allocation if any + if (m_fft) { + fftFactory->releaseEngine(m_settings.m_fftSize, false, m_fftEngineSequence); + } + m_fftEngineSequence = fftFactory->getEngine(fftSize, false, &m_fft); m_ofs = 20.0f * log10f(1.0f / fftSize); m_powFFTDiv = fftSize * fftSize;