From c434b2e24e7100783db4a41922cf6e84ff9c472f Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 18 May 2017 22:54:24 +0200 Subject: [PATCH] Fixed re-enumeration of static devices --- sdrbase/mainwindow.cpp | 8 ++++++-- sdrbase/plugin/pluginmanager.cpp | 12 ++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index 0eb5fd97a..b015373d3 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -990,7 +990,9 @@ void MainWindow::on_action_reloadDevices_triggered() { QComboBox *deviceSelectorComboBox = (*it)->m_samplingDeviceControl->getDeviceSelector(); bool sampleSourceSignalsBlocked = deviceSelectorComboBox->blockSignals(true); - m_pluginManager->fillSampleSourceSelector(deviceSelectorComboBox, (*it)->m_deviceSourceEngine->getUID()); + uint dspDeviceSourceEngineUID = (*it)->m_deviceSourceEngine->getUID(); + m_pluginManager->duplicateLocalSampleSourceDevices(dspDeviceSourceEngineUID); + m_pluginManager->fillSampleSourceSelector(deviceSelectorComboBox, dspDeviceSourceEngineUID); int newIndex = m_pluginManager->getSampleSourceSelectorIndex(deviceSelectorComboBox, (*it)->m_deviceSourceAPI); deviceSelectorComboBox->setCurrentIndex(newIndex); deviceSelectorComboBox->blockSignals(sampleSourceSignalsBlocked); @@ -1000,7 +1002,9 @@ void MainWindow::on_action_reloadDevices_triggered() { QComboBox *deviceSelectorComboBox = (*it)->m_samplingDeviceControl->getDeviceSelector(); bool sampleSinkSignalsBlocked = deviceSelectorComboBox->blockSignals(true); - m_pluginManager->fillSampleSinkSelector(deviceSelectorComboBox, (*it)->m_deviceSinkEngine->getUID()); + uint dspDeviceSinkEngineUID = (*it)->m_deviceSinkEngine->getUID(); + m_pluginManager->duplicateLocalSampleSinkDevices(dspDeviceSinkEngineUID); + m_pluginManager->fillSampleSinkSelector(deviceSelectorComboBox, dspDeviceSinkEngineUID); int newIndex = m_pluginManager->getSampleSinkSelectorIndex(deviceSelectorComboBox, (*it)->m_deviceSinkAPI); deviceSelectorComboBox->setCurrentIndex(newIndex); deviceSelectorComboBox->blockSignals(sampleSinkSignalsBlocked); diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index f03afe145..cf563a4cc 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -127,6 +127,12 @@ void PluginManager::updateSampleSourceDevices() ssd[j].id, ssd[j].serial, ssd[j].sequence)); + qDebug("PluginManager::updateSampleSourceDevices: %s %s %s %s %d", + qPrintable(ssd[j].displayedName), + qPrintable(ssd[j].hardwareId), + qPrintable(ssd[j].id), + qPrintable(ssd[j].serial), + ssd[j].sequence); } } } @@ -147,6 +153,12 @@ void PluginManager::updateSampleSinkDevices() ssd[j].id, ssd[j].serial, ssd[j].sequence)); + qDebug("PluginManager::updateSampleSinkDevices: %s %s %s %s %d", + qPrintable(ssd[j].displayedName), + qPrintable(ssd[j].hardwareId), + qPrintable(ssd[j].id), + qPrintable(ssd[j].serial), + ssd[j].sequence); } } }