mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 09:18:54 -05:00
DeviceSet and DeviceUISet: use delete channel API instead of destroy method so that the virtual destructor of the channel is called appropriately
This commit is contained in:
parent
aca4a53513
commit
7b4e751ba1
@ -59,7 +59,7 @@ void DeviceSet::freeChannels()
|
|||||||
for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
|
for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
|
||||||
{
|
{
|
||||||
qDebug("DeviceSet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i]->getURI()));
|
qDebug("DeviceSet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i]->getURI()));
|
||||||
m_channelInstanceRegistrations[i]->destroy();
|
delete m_channelInstanceRegistrations[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
MainCore::instance()->clearChannels(this);
|
MainCore::instance()->clearChannels(this);
|
||||||
@ -87,7 +87,7 @@ void DeviceSet::deleteChannel(int channelIndex)
|
|||||||
{
|
{
|
||||||
if (channelIndex < m_channelInstanceRegistrations.count())
|
if (channelIndex < m_channelInstanceRegistrations.count())
|
||||||
{
|
{
|
||||||
m_channelInstanceRegistrations[channelIndex]->destroy();
|
delete m_channelInstanceRegistrations[channelIndex];
|
||||||
m_channelInstanceRegistrations.removeAt(channelIndex);
|
m_channelInstanceRegistrations.removeAt(channelIndex);
|
||||||
MainCore::instance()->removeChannelInstanceAt(this, channelIndex);
|
MainCore::instance()->removeChannelInstanceAt(this, channelIndex);
|
||||||
renameChannelInstances();
|
renameChannelInstances();
|
||||||
@ -141,7 +141,7 @@ void DeviceSet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginAPI
|
|||||||
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getRxChannelRegistrations();
|
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getRxChannelRegistrations();
|
||||||
|
|
||||||
// copy currently open channels and clear list
|
// copy currently open channels and clear list
|
||||||
ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
|
QList<ChannelAPI*> openChannels = m_channelInstanceRegistrations;
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
mainCore->clearChannels(this);
|
mainCore->clearChannels(this);
|
||||||
|
|
||||||
@ -241,7 +241,7 @@ void DeviceSet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginAPI
|
|||||||
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getTxChannelRegistrations();
|
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getTxChannelRegistrations();
|
||||||
|
|
||||||
// copy currently open channels and clear list
|
// copy currently open channels and clear list
|
||||||
ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
|
QList<ChannelAPI*> openChannels = m_channelInstanceRegistrations;
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
mainCore->clearChannels(this);
|
mainCore->clearChannels(this);
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ void DeviceSet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *pluginA
|
|||||||
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getMIMOChannelRegistrations();
|
PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getMIMOChannelRegistrations();
|
||||||
|
|
||||||
// copy currently open channels and clear list
|
// copy currently open channels and clear list
|
||||||
ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
|
QList<ChannelAPI*> openChannels = m_channelInstanceRegistrations;
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
mainCore->clearChannels(this);
|
mainCore->clearChannels(this);
|
||||||
|
|
||||||
|
@ -86,9 +86,7 @@ public:
|
|||||||
int webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage);
|
int webapiSpectrumServerDelete(SWGSDRangel::SWGSuccessResponse& response, QString& errorMessage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef QList<ChannelAPI*> ChannelInstanceRegistrations;
|
QList<ChannelAPI*> m_channelInstanceRegistrations;
|
||||||
|
|
||||||
ChannelInstanceRegistrations m_channelInstanceRegistrations;
|
|
||||||
int m_deviceTabIndex;
|
int m_deviceTabIndex;
|
||||||
|
|
||||||
void renameChannelInstances();
|
void renameChannelInstances();
|
||||||
|
@ -170,7 +170,7 @@ void DeviceUISet::freeChannels()
|
|||||||
{
|
{
|
||||||
qDebug("DeviceUISet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
qDebug("DeviceUISet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
||||||
m_channelInstanceRegistrations[i].m_gui->destroy();
|
m_channelInstanceRegistrations[i].m_gui->destroy();
|
||||||
m_channelInstanceRegistrations[i].m_channelAPI->destroy();
|
delete m_channelInstanceRegistrations[i].m_channelAPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
@ -185,7 +185,7 @@ void DeviceUISet::deleteChannel(int channelIndex)
|
|||||||
qPrintable(m_channelInstanceRegistrations[channelIndex].m_channelAPI->getURI()),
|
qPrintable(m_channelInstanceRegistrations[channelIndex].m_channelAPI->getURI()),
|
||||||
channelIndex);
|
channelIndex);
|
||||||
m_channelInstanceRegistrations[channelIndex].m_gui->destroy();
|
m_channelInstanceRegistrations[channelIndex].m_gui->destroy();
|
||||||
m_channelInstanceRegistrations[channelIndex].m_channelAPI->destroy();
|
delete m_channelInstanceRegistrations[channelIndex].m_channelAPI;
|
||||||
m_channelInstanceRegistrations.removeAt(channelIndex);
|
m_channelInstanceRegistrations.removeAt(channelIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA
|
|||||||
qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
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_channelAPI->setMessageQueueToGUI(nullptr); // have channel stop sending messages to its GUI
|
||||||
m_channelInstanceRegistrations[i].m_gui->destroy();
|
m_channelInstanceRegistrations[i].m_gui->destroy();
|
||||||
m_channelInstanceRegistrations[i].m_channelAPI->destroy();
|
delete m_channelInstanceRegistrations[i].m_channelAPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
@ -453,7 +453,7 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA
|
|||||||
qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
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_channelAPI->setMessageQueueToGUI(nullptr); // have channel stop sending messages to its GUI
|
||||||
m_channelInstanceRegistrations[i].m_gui->destroy();
|
m_channelInstanceRegistrations[i].m_gui->destroy();
|
||||||
m_channelInstanceRegistrations[i].m_channelAPI->destroy();
|
delete m_channelInstanceRegistrations[i].m_channelAPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
@ -579,7 +579,7 @@ void DeviceUISet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *plugi
|
|||||||
qDebug("DeviceUISet::loadMIMOChannelSettings: destroying old channel [%s]",
|
qDebug("DeviceUISet::loadMIMOChannelSettings: destroying old channel [%s]",
|
||||||
qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
qPrintable(m_channelInstanceRegistrations[i].m_channelAPI->getURI()));
|
||||||
m_channelInstanceRegistrations[i].m_gui->destroy(); // stop GUI first (issue #1427)
|
m_channelInstanceRegistrations[i].m_gui->destroy(); // stop GUI first (issue #1427)
|
||||||
m_channelInstanceRegistrations[i].m_channelAPI->destroy(); // stop channel before (issue #860)
|
delete m_channelInstanceRegistrations[i].m_channelAPI; // stop channel before (issue #860)
|
||||||
}
|
}
|
||||||
|
|
||||||
m_channelInstanceRegistrations.clear();
|
m_channelInstanceRegistrations.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user