diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index e201b82ac..829ad3e24 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -858,9 +858,11 @@ void MainWindow::on_sampleSink_confirmClicked(bool checked) int selectedComboIndex = deviceUI->m_samplingDeviceControl->getDeviceSelector()->currentIndex(); void *devicePtr = deviceUI->m_samplingDeviceControl->getDeviceSelector()->itemData(selectedComboIndex).value(); deviceUI->m_deviceSinkAPI->stopGeneration(); + + deviceUI->m_deviceSinkAPI->setSampleSinkPluginGUI(0); // deletes old GUI and input object deviceUI->m_deviceSinkAPI->clearBuddiesLists(); // remove old API from buddies lists + m_pluginManager->selectSampleSinkByDevice(devicePtr, deviceUI->m_deviceSinkAPI); // sets the new API - deviceUI->m_deviceSinkAPI->loadSinkSettings(m_settings.getWorkingPreset()); // load new API settings // add to buddies list std::vector::iterator it = m_deviceUIs.begin(); @@ -887,6 +889,16 @@ void MainWindow::on_sampleSink_confirmClicked(bool checked) } } } + + // constructs new GUI and output object + QWidget *gui; + PluginManager::SamplingDevice *sampleSinkDevice = (PluginManager::SamplingDevice *) devicePtr; + PluginGUI *pluginGUI = sampleSinkDevice->m_plugin->createSampleSinkPluginGUI(sampleSinkDevice->m_deviceId, &gui, deviceUI->m_deviceSinkAPI); + + deviceUI->m_deviceSinkAPI->setSampleSinkPluginGUI(pluginGUI); + deviceUI->m_deviceSinkAPI->setOutputGUI(gui, sampleSinkDevice->m_displayName); + + deviceUI->m_deviceSinkAPI->loadSinkSettings(m_settings.getWorkingPreset()); // load new API settings } } diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index c66de8ff7..2b051047c 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -714,19 +714,11 @@ void PluginManager::selectSampleSinkByDevice(void *devicePtr, DeviceSinkAPI *dev << " ser: " << sampleSinkDevice->m_deviceSerial.toStdString().c_str() << " seq: " << sampleSinkDevice->m_deviceSequence; - deviceAPI->setSampleSinkPluginGUI(0); // this effectively destroys the previous GUI if it exists - // m_sampleSourcePluginGUI = pluginGUI; deviceAPI->setSampleSinkSequence(sampleSinkDevice->m_deviceSequence); deviceAPI->setHardwareId(sampleSinkDevice->m_hadrwareId); deviceAPI->setSampleSinkId(sampleSinkDevice->m_deviceId); deviceAPI->setSampleSinkSerial(sampleSinkDevice->m_deviceSerial); - - QWidget *gui; - PluginGUI *pluginGUI = sampleSinkDevice->m_plugin->createSampleSinkPluginGUI(sampleSinkDevice->m_deviceId, &gui, deviceAPI); - - deviceAPI->setSampleSinkPluginGUI(pluginGUI); - deviceAPI->setOutputGUI(gui, sampleSinkDevice->m_displayName); } void PluginManager::loadPlugins(const QDir& dir)