From 8721379b5566b511096566f5053b9a62d626f5fa Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 13 Oct 2022 01:45:31 +0200 Subject: [PATCH] NFM demod: protect from m_basebandSink is null --- plugins/channelrx/demodnfm/nfmdemod.cpp | 1 + plugins/channelrx/demodnfm/nfmdemod.h | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/channelrx/demodnfm/nfmdemod.cpp b/plugins/channelrx/demodnfm/nfmdemod.cpp index fea9e9b7c..74522f513 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.cpp +++ b/plugins/channelrx/demodnfm/nfmdemod.cpp @@ -133,6 +133,7 @@ void NFMDemod::start() .arg(getIndexInDeviceSet()) ); m_basebandSink->setChannel(this); + m_basebandSink->setMessageQueueToGUI(getMessageQueueToGUI()); m_basebandSink->moveToThread(m_thread); QObject::connect( diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h index 6889407f6..b6125ce61 100644 --- a/plugins/channelrx/demodnfm/nfmdemod.h +++ b/plugins/channelrx/demodnfm/nfmdemod.h @@ -120,14 +120,20 @@ public: const QStringList& channelSettingsKeys, SWGSDRangel::SWGChannelSettings& response); - const Real *getCtcssToneSet(int& nbTones) const { return m_basebandSink->getCtcssToneSet(nbTones); } - bool getSquelchOpen() const { return m_basebandSink->getSquelchOpen(); } - void getMagSqLevels(double& avg, double& peak, int& nbSamples) { m_basebandSink->getMagSqLevels(avg, peak, nbSamples); } - void setMessageQueueToGUI(MessageQueue* queue) override { - ChannelAPI::setMessageQueueToGUI(queue); - m_basebandSink->setMessageQueueToGUI(queue); + const Real *getCtcssToneSet(int& nbTones) const { return m_running ? m_basebandSink->getCtcssToneSet(nbTones) : nullptr; } + bool getSquelchOpen() const { return m_running && m_basebandSink->getSquelchOpen(); } + + void getMagSqLevels(double& avg, double& peak, int& nbSamples) + { + if (m_running) { + m_basebandSink->getMagSqLevels(avg, peak, nbSamples); + } else { + avg = 0.0; peak = 0.0; nbSamples = 1; + } } - int getAudioSampleRate() const { return m_basebandSink->getAudioSampleRate(); } + + void setMessageQueueToGUI(MessageQueue* queue) override { ChannelAPI::setMessageQueueToGUI(queue); } + int getAudioSampleRate() const { return m_running ? m_basebandSink->getAudioSampleRate() : 0; } uint32_t getNumberOfDeviceStreams() const;