From 5c51297717b23de6eaca003e2bd538ce3bcd79f6 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 18 Apr 2018 22:20:47 +0200 Subject: [PATCH] Moved FFT filter destruction at end of the mod or demod destructor --- plugins/channelrx/chanalyzer/chanalyzer.cpp | 4 ++-- .../channelrx/chanalyzerng/chanalyzerng.cpp | 4 ++-- plugins/channelrx/demodatv/atvdemod.cpp | 2 ++ plugins/channelrx/demodbfm/bfmdemod.cpp | 7 +------ plugins/channelrx/demoddatv/datvdemod.cpp | 1 + plugins/channelrx/demodssb/ssbdemod.cpp | 4 ++-- plugins/channelrx/demodwfm/wfmdemod.cpp | 6 +----- plugins/channelrx/tcpsrc/tcpsrc.cpp | 3 +-- plugins/channelrx/udpsrc/udpsrc.cpp | 2 +- plugins/channeltx/modatv/atvmod.cpp | 4 ++++ plugins/channeltx/modssb/ssbmod.cpp | 21 +++++-------------- plugins/channeltx/modwfm/wfmmod.cpp | 4 ++-- plugins/channeltx/udpsink/udpsink.cpp | 4 ++-- 13 files changed, 26 insertions(+), 40 deletions(-) diff --git a/plugins/channelrx/chanalyzer/chanalyzer.cpp b/plugins/channelrx/chanalyzer/chanalyzer.cpp index c8f80498f..8af199fb5 100644 --- a/plugins/channelrx/chanalyzer/chanalyzer.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzer.cpp @@ -63,12 +63,12 @@ ChannelAnalyzer::ChannelAnalyzer(DeviceSourceAPI *deviceAPI) : ChannelAnalyzer::~ChannelAnalyzer() { - if (SSBFilter) delete SSBFilter; - if (DSBFilter) delete DSBFilter; m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + if (SSBFilter) delete SSBFilter; + if (DSBFilter) delete DSBFilter; } void ChannelAnalyzer::configure(MessageQueue* messageQueue, diff --git a/plugins/channelrx/chanalyzerng/chanalyzerng.cpp b/plugins/channelrx/chanalyzerng/chanalyzerng.cpp index 5e91572b8..fed5b3e2f 100644 --- a/plugins/channelrx/chanalyzerng/chanalyzerng.cpp +++ b/plugins/channelrx/chanalyzerng/chanalyzerng.cpp @@ -60,12 +60,12 @@ ChannelAnalyzerNG::ChannelAnalyzerNG(DeviceSourceAPI *deviceAPI) : ChannelAnalyzerNG::~ChannelAnalyzerNG() { - delete SSBFilter; - delete DSBFilter; m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete SSBFilter; + delete DSBFilter; } void ChannelAnalyzerNG::configure(MessageQueue* messageQueue, diff --git a/plugins/channelrx/demodatv/atvdemod.cpp b/plugins/channelrx/demodatv/atvdemod.cpp index 73ac7ef83..68e8feed5 100644 --- a/plugins/channelrx/demodatv/atvdemod.cpp +++ b/plugins/channelrx/demodatv/atvdemod.cpp @@ -101,6 +101,8 @@ ATVDemod::~ATVDemod() m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_DSBFilter; + delete m_DSBFilterBuffer; } void ATVDemod::setTVScreen(TVScreen *objScreen) diff --git a/plugins/channelrx/demodbfm/bfmdemod.cpp b/plugins/channelrx/demodbfm/bfmdemod.cpp index 43c4eae61..c7c8050ef 100644 --- a/plugins/channelrx/demodbfm/bfmdemod.cpp +++ b/plugins/channelrx/demodbfm/bfmdemod.cpp @@ -78,7 +78,6 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); - m_deemphasisFilterX.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); m_deemphasisFilterY.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); m_phaseDiscri.setFMScaling(384000/m_fmExcursion); @@ -97,17 +96,13 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : BFMDemod::~BFMDemod() { - if (m_rfFilter) - { - delete m_rfFilter; - } - DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_rfFilter; } void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) diff --git a/plugins/channelrx/demoddatv/datvdemod.cpp b/plugins/channelrx/demoddatv/datvdemod.cpp index 94a228380..2023e5c3f 100644 --- a/plugins/channelrx/demoddatv/datvdemod.cpp +++ b/plugins/channelrx/demoddatv/datvdemod.cpp @@ -91,6 +91,7 @@ DATVDemod::~DATVDemod() m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_objRFFilter; } bool DATVDemod::SetTVScreen(TVScreen *objScreen) diff --git a/plugins/channelrx/demodssb/ssbdemod.cpp b/plugins/channelrx/demodssb/ssbdemod.cpp index 7f3a93dbf..80ca4d644 100644 --- a/plugins/channelrx/demodssb/ssbdemod.cpp +++ b/plugins/channelrx/demodssb/ssbdemod.cpp @@ -96,14 +96,14 @@ SSBDemod::SSBDemod(DeviceSourceAPI *deviceAPI) : SSBDemod::~SSBDemod() { - if (SSBFilter) delete SSBFilter; - if (DSBFilter) delete DSBFilter; DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete SSBFilter; + delete DSBFilter; } void SSBDemod::configure(MessageQueue* messageQueue, diff --git a/plugins/channelrx/demodwfm/wfmdemod.cpp b/plugins/channelrx/demodwfm/wfmdemod.cpp index 3493d1eca..e12606162 100644 --- a/plugins/channelrx/demodwfm/wfmdemod.cpp +++ b/plugins/channelrx/demodwfm/wfmdemod.cpp @@ -72,17 +72,13 @@ WFMDemod::WFMDemod(DeviceSourceAPI* deviceAPI) : WFMDemod::~WFMDemod() { - if (m_rfFilter) - { - delete m_rfFilter; - } - DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_rfFilter; } void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) diff --git a/plugins/channelrx/tcpsrc/tcpsrc.cpp b/plugins/channelrx/tcpsrc/tcpsrc.cpp index 6b3d7a49a..5e19f537f 100644 --- a/plugins/channelrx/tcpsrc/tcpsrc.cpp +++ b/plugins/channelrx/tcpsrc/tcpsrc.cpp @@ -73,12 +73,11 @@ TCPSrc::TCPSrc(DeviceSourceAPI* deviceAPI) : TCPSrc::~TCPSrc() { - if (TCPFilter) delete TCPFilter; - m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete TCPFilter; } void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) diff --git a/plugins/channelrx/udpsrc/udpsrc.cpp b/plugins/channelrx/udpsrc/udpsrc.cpp index fd3e1f482..dc2c1ab24 100644 --- a/plugins/channelrx/udpsrc/udpsrc.cpp +++ b/plugins/channelrx/udpsrc/udpsrc.cpp @@ -117,12 +117,12 @@ UDPSrc::~UDPSrc() delete m_udpBuffer16; delete m_udpBufferMono16; delete[] m_udpAudioBuf; - if (UDPFilter) delete UDPFilter; DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSink(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete UDPFilter; } void UDPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) diff --git a/plugins/channeltx/modatv/atvmod.cpp b/plugins/channeltx/modatv/atvmod.cpp index c98025b09..285802bb2 100644 --- a/plugins/channeltx/modatv/atvmod.cpp +++ b/plugins/channeltx/modatv/atvmod.cpp @@ -110,6 +110,10 @@ ATVMod::~ATVMod() m_deviceAPI->removeThreadedSource(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_SSBFilter; + delete m_DSBFilter; + delete[] m_SSBFilterBuffer; + delete[] m_DSBFilterBuffer; } void ATVMod::pullAudio(int nbSamples __attribute__((unused))) diff --git a/plugins/channeltx/modssb/ssbmod.cpp b/plugins/channeltx/modssb/ssbmod.cpp index 8c341e4be..04daf762b 100644 --- a/plugins/channeltx/modssb/ssbmod.cpp +++ b/plugins/channeltx/modssb/ssbmod.cpp @@ -114,28 +114,17 @@ SSBMod::SSBMod(DeviceSinkAPI *deviceAPI) : SSBMod::~SSBMod() { - if (m_SSBFilter) { - delete m_SSBFilter; - } - - if (m_DSBFilter) { - delete m_DSBFilter; - } - - if (m_SSBFilterBuffer) { - delete m_SSBFilterBuffer; - } - - if (m_DSBFilterBuffer) { - delete m_DSBFilterBuffer; - } - DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSource(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + + delete m_SSBFilter; + delete m_DSBFilter; + delete[] m_SSBFilterBuffer; + delete[] m_DSBFilterBuffer; } void SSBMod::pull(Sample& sample) diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 09b4c5074..6aa022f28 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -98,13 +98,13 @@ WFMMod::WFMMod(DeviceSinkAPI *deviceAPI) : WFMMod::~WFMMod() { - delete m_rfFilter; - delete[] m_rfFilterBuffer; DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSource(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_rfFilter; + delete[] m_rfFilterBuffer; } void WFMMod::pull(Sample& sample) diff --git a/plugins/channeltx/udpsink/udpsink.cpp b/plugins/channeltx/udpsink/udpsink.cpp index 41bbe2542..93e7769c3 100644 --- a/plugins/channeltx/udpsink/udpsink.cpp +++ b/plugins/channeltx/udpsink/udpsink.cpp @@ -82,12 +82,12 @@ UDPSink::UDPSink(DeviceSinkAPI *deviceAPI) : UDPSink::~UDPSink() { - delete[] m_SSBFilterBuffer; - delete m_SSBFilter; m_deviceAPI->removeChannelAPI(this); m_deviceAPI->removeThreadedSource(m_threadedChannelizer); delete m_threadedChannelizer; delete m_channelizer; + delete m_SSBFilter; + delete[] m_SSBFilterBuffer; } void UDPSink::start()