From de23efe635043867b914faa2977228e0780d4121 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 21 Apr 2021 12:28:56 +0200 Subject: [PATCH] Delete channel or feature and their GUI in the proper order in DeviceUISet and FeatureUISet. Remove original fix for #806. Fixes #860 --- plugins/channelrx/chanalyzer/chanalyzergui.cpp | 1 - plugins/channelrx/demodatv/atvdemodgui.cpp | 3 --- plugins/channelrx/demoddatv/datvdemodgui.cpp | 6 ------ plugins/channelrx/demoddsd/dsddemodgui.cpp | 1 - plugins/feature/demodanalyzer/demodanalyzergui.cpp | 2 -- sdrgui/device/deviceuiset.cpp | 12 ++++++------ sdrgui/feature/featureuiset.cpp | 6 +++--- 7 files changed, 9 insertions(+), 22 deletions(-) diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index 957eaa403..6ca79a07b 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -525,7 +525,6 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device ChannelAnalyzerGUI::~ChannelAnalyzerGUI() { - m_channelAnalyzer->setSampleSink(nullptr); qDebug("ChannelAnalyzerGUI::~ChannelAnalyzerGUI"); ui->glScope->disconnectTimer(); delete ui; diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index c5816ef7d..2c2e72c46 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -275,9 +275,6 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Base ATVDemodGUI::~ATVDemodGUI() { - m_atvDemod->setScopeSink(nullptr); - m_atvDemod->setTVScreen(nullptr); - delete m_scopeVis; delete ui; } diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index 26be36d5a..bd12e1e32 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -281,12 +281,6 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba DATVDemodGUI::~DATVDemodGUI() { - m_objDATVDemod->SetTVScreen(nullptr); - m_objDATVDemod->setMERLabel(nullptr); - m_objDATVDemod->setCNRLabel(nullptr); - m_objDATVDemod->setMERMeter(nullptr); - m_objDATVDemod->setCNRMeter(nullptr); - delete ui; } diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index e8e50eaa5..e8e3d9ff4 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -381,7 +381,6 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban DSDDemodGUI::~DSDDemodGUI() { - m_dsdDemod->setScopeXYSink(nullptr); delete m_scopeVisXY; delete ui; } diff --git a/plugins/feature/demodanalyzer/demodanalyzergui.cpp b/plugins/feature/demodanalyzer/demodanalyzergui.cpp index fd479c919..11960c2da 100644 --- a/plugins/feature/demodanalyzer/demodanalyzergui.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzergui.cpp @@ -178,8 +178,6 @@ DemodAnalyzerGUI::DemodAnalyzerGUI(PluginAPI* pluginAPI, FeatureUISet *featureUI DemodAnalyzerGUI::~DemodAnalyzerGUI() { - m_demodAnalyzer->setSampleSink(nullptr); - delete ui; delete m_spectrumScopeComboVis; delete m_scopeVis; diff --git a/sdrgui/device/deviceuiset.cpp b/sdrgui/device/deviceuiset.cpp index e58d80492..fcd74368b 100644 --- a/sdrgui/device/deviceuiset.cpp +++ b/sdrgui/device/deviceuiset.cpp @@ -128,8 +128,8 @@ void DeviceUISet::freeChannels() for(int i = 0; i < m_channelInstanceRegistrations.count(); i++) { qDebug("DeviceUISet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI())); - m_channelInstanceRegistrations[i].m_gui->destroy(); m_channelInstanceRegistrations[i].m_channelAPI->destroy(); + m_channelInstanceRegistrations[i].m_gui->destroy(); } m_channelInstanceRegistrations.clear(); @@ -143,8 +143,8 @@ void DeviceUISet::deleteChannel(int channelIndex) qDebug("DeviceUISet::deleteChannel: delete channel [%s] at %d", qPrintable(m_channelInstanceRegistrations[channelIndex].m_channelAPI->getURI()), channelIndex); - m_channelInstanceRegistrations[channelIndex].m_gui->destroy(); m_channelInstanceRegistrations[channelIndex].m_channelAPI->destroy(); + m_channelInstanceRegistrations[channelIndex].m_gui->destroy(); m_channelInstanceRegistrations.removeAt(channelIndex); } @@ -167,8 +167,8 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA qDebug("DeviceUISet::loadRxChannelSettings: destroying old channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI())); m_channelInstanceRegistrations[i].m_channelAPI->setMessageQueueToGUI(nullptr); // have channel stop sending messages to its GUI - m_channelInstanceRegistrations[i].m_gui->destroy(); m_channelInstanceRegistrations[i].m_channelAPI->destroy(); + m_channelInstanceRegistrations[i].m_gui->destroy(); } m_channelInstanceRegistrations.clear(); @@ -253,8 +253,8 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA qDebug("DeviceUISet::loadTxChannelSettings: destroying old channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI())); m_channelInstanceRegistrations[i].m_channelAPI->setMessageQueueToGUI(nullptr); // have channel stop sending messages to its GUI - m_channelInstanceRegistrations[i].m_gui->destroy(); m_channelInstanceRegistrations[i].m_channelAPI->destroy(); + m_channelInstanceRegistrations[i].m_gui->destroy(); } m_channelInstanceRegistrations.clear(); @@ -338,8 +338,8 @@ void DeviceUISet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *plugi { qDebug("DeviceUISet::loadMIMOChannelSettings: destroying old channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI())); - m_channelInstanceRegistrations[i].m_gui->destroy(); // FIXME: stop channel before - m_channelInstanceRegistrations[i].m_channelAPI->destroy(); + m_channelInstanceRegistrations[i].m_channelAPI->destroy(); // stop channel before (issue #860) + m_channelInstanceRegistrations[i].m_gui->destroy(); } m_channelInstanceRegistrations.clear(); diff --git a/sdrgui/feature/featureuiset.cpp b/sdrgui/feature/featureuiset.cpp index 40b676a86..050f4db4a 100644 --- a/sdrgui/feature/featureuiset.cpp +++ b/sdrgui/feature/featureuiset.cpp @@ -71,8 +71,8 @@ void FeatureUISet::freeFeatures() for(int i = 0; i < m_featureInstanceRegistrations.count(); i++) { qDebug("FeatureUISet::freeFeatures: destroying feature [%s]", qPrintable(m_featureInstanceRegistrations[i].m_feature->getURI())); - m_featureInstanceRegistrations[i].m_gui->destroy(); m_featureInstanceRegistrations[i].m_feature->destroy(); + m_featureInstanceRegistrations[i].m_gui->destroy(); } m_featureSet->clearFeatures(); @@ -85,8 +85,8 @@ void FeatureUISet::deleteFeature(int featureIndex) qDebug("FeatureUISet::deleteFeature: delete feature [%s] at %d", qPrintable(m_featureInstanceRegistrations[featureIndex].m_feature->getURI()), featureIndex); - m_featureInstanceRegistrations[featureIndex].m_gui->destroy(); m_featureInstanceRegistrations[featureIndex].m_feature->destroy(); + m_featureInstanceRegistrations[featureIndex].m_gui->destroy(); m_featureSet->removeFeatureInstanceAt(featureIndex); } } @@ -124,8 +124,8 @@ void FeatureUISet::loadFeatureSetSettings(const FeatureSetPreset *preset, Plugin for (int i = 0; i < openFeatures.count(); i++) { qDebug("FeatureUISet::loadFeatureSetSettings: destroying old feature [%s]", qPrintable(openFeatures[i].m_feature->getURI())); - openFeatures[i].m_gui->destroy(); openFeatures[i].m_feature->destroy(); + openFeatures[i].m_gui->destroy(); } qDebug("FeatureUISet::loadFeatureSetSettings: %d feature(s) in preset", preset->getFeatureCount());