From b770e656b3924e74d34a0164b781324dcb63d6aa Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 30 Oct 2017 02:23:06 +0100 Subject: [PATCH] Fix previous sink plugin GUI delete by doing it explicitly in the main window --- sdrgui/mainwindow.cpp | 5 +++++ sdrgui/plugin/pluginmanager.cpp | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 710a14ea7..b9a1475b2 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -300,6 +300,11 @@ void MainWindow::addSinkDevice() // create a file sink by default m_pluginManager->selectSampleSinkBySerialOrSequence("sdrangel.samplesink.filesink", "0", 0, m_deviceUIs.back()->m_deviceSinkAPI); + + // delete previous plugin GUI if it exists + m_deviceUIs.back()->m_deviceSinkAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI( + m_deviceUIs.back()->m_deviceSinkAPI->getSampleSinkPluginInstanceGUI()); + DeviceSampleSink *sink = m_deviceUIs.back()->m_deviceSinkAPI->getPluginInterface()->createSampleSinkPluginInstanceOutput( m_deviceUIs.back()->m_deviceSinkAPI->getSampleSinkId(), m_deviceUIs.back()->m_deviceSinkAPI); m_deviceUIs.back()->m_deviceSinkAPI->setSampleSink(sink); diff --git a/sdrgui/plugin/pluginmanager.cpp b/sdrgui/plugin/pluginmanager.cpp index b3ef7ec25..1f1836dcf 100644 --- a/sdrgui/plugin/pluginmanager.cpp +++ b/sdrgui/plugin/pluginmanager.cpp @@ -498,7 +498,6 @@ int PluginManager::selectSampleSinkBySerialOrSequence(const QString& sinkId, con << " seq: " << m_sampleSinkDevices[index].m_deviceSequence; deviceAPI->stopGeneration(); - deviceAPI->setSampleSinkPluginInstanceUI(0); // this effectively destroys the previous GUI if it exists // m_sampleSourcePluginGUI = pluginGUI; deviceAPI->setSampleSinkSequence(m_sampleSinkDevices[index].m_deviceSequence);