diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp index 358c8b1b4..7f2c2a8d1 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp @@ -78,7 +78,9 @@ HackRFInputGui::HackRFInputGui(DeviceUISet *deviceUISet, QWidget* parent) : HackRFInputGui::~HackRFInputGui() { + qDebug("HackRFInputGui::~HackRFInputGui"); delete ui; + qDebug("HackRFInputGui::~HackRFInputGui: end"); } void HackRFInputGui::destroy() diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 71a2f3b9d..9d10e9b83 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -78,7 +78,9 @@ RTLSDRGui::RTLSDRGui(DeviceUISet *deviceUISet, QWidget* parent) : RTLSDRGui::~RTLSDRGui() { + qDebug("RTLSDRGui::~RTLSDRGui"); delete ui; + qDebug("RTLSDRGui::~RTLSDRGui: end"); } void RTLSDRGui::destroy() diff --git a/sdrgui/mainwindow.cpp b/sdrgui/mainwindow.cpp index 47be1a7d8..1f11dbd68 100644 --- a/sdrgui/mainwindow.cpp +++ b/sdrgui/mainwindow.cpp @@ -400,7 +400,7 @@ void MainWindow::sampleSourceAdd(Workspace *deviceWorkspace, Workspace *spectrum deviceIndex = DeviceEnumerator::instance()->getFileInputDeviceIndex(); } - sampleSourceCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back()); + sampleSourceCreate(deviceSetIndex, deviceIndex, m_deviceUIs.back()); m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(deviceWorkspace->getIndex()); m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(spectrumWorkspace->getIndex()); MainSpectrumGUI *mainSpectrumGUI = m_deviceUIs.back()->m_mainSpectrumGUI; @@ -427,10 +427,10 @@ void MainWindow::sampleSourceAdd(Workspace *deviceWorkspace, Workspace *spectrum void MainWindow::sampleSourceCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ) { + DeviceAPI *deviceAPI = deviceUISet->m_deviceAPI; int selectedDeviceIndex = deviceIndex; DeviceEnumerator::instance()->changeRxSelection(deviceSetIndex, deviceIndex); const PluginInterface::SamplingDevice *samplingDevice = DeviceEnumerator::instance()->getRxSamplingDevice(deviceIndex); @@ -507,10 +507,7 @@ void MainWindow::sampleSourceCreate( deviceUISet->m_deviceAPI->setBuddyLeader(true); } - // delete previous GUI if it exists - if (deviceUISet->m_deviceGUI) { - emit deviceUISet->m_deviceGUI->destroy(); - } + // DeviceGUI *oldDeviceGUI = deviceUISet->m_deviceGUI; // store old GUI pointer for later // constructs new GUI and input object DeviceSampleSource *source = deviceAPI->getPluginInterface()->createSampleSourcePluginInstance( @@ -618,7 +615,7 @@ void MainWindow::sampleSinkAdd(Workspace *deviceWorkspace, Workspace *spectrumWo deviceIndex = DeviceEnumerator::instance()->getFileOutputDeviceIndex(); // create a file output by default } - sampleSinkCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back()); + sampleSinkCreate(deviceSetIndex, deviceIndex, m_deviceUIs.back()); m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(deviceWorkspace->getIndex()); m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(spectrumWorkspace->getIndex()); MainSpectrumGUI *mainSpectrumGUI = m_deviceUIs.back()->m_mainSpectrumGUI; @@ -645,10 +642,10 @@ void MainWindow::sampleSinkAdd(Workspace *deviceWorkspace, Workspace *spectrumWo void MainWindow::sampleSinkCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ) { + DeviceAPI *deviceAPI = deviceUISet->m_deviceAPI; int selectedDeviceIndex = deviceIndex; DeviceEnumerator::instance()->changeTxSelection(deviceSetIndex, deviceIndex); const PluginInterface::SamplingDevice *samplingDevice = DeviceEnumerator::instance()->getTxSamplingDevice(deviceIndex); @@ -725,10 +722,7 @@ void MainWindow::sampleSinkCreate( deviceAPI->setBuddyLeader(true); } - // delete previous plugin GUI if it exists - if (deviceUISet->m_deviceGUI) { - emit deviceUISet->m_deviceGUI->destroy(); - } + // DeviceGUI *oldDeviceGUI = deviceUISet->m_deviceGUI; // store old GUI pointer for later // constructs new GUI and output object DeviceSampleSink *sink = deviceAPI->getPluginInterface()->createSampleSinkPluginInstance( @@ -844,7 +838,7 @@ void MainWindow::sampleMIMOAdd(Workspace *deviceWorkspace, Workspace *spectrumWo deviceIndex = DeviceEnumerator::instance()->getTestMIMODeviceIndex(); // create a test MIMO by default } - sampleMIMOCreate(deviceSetIndex, deviceIndex, deviceAPI, m_deviceUIs.back()); + sampleMIMOCreate(deviceSetIndex, deviceIndex, m_deviceUIs.back()); m_deviceUIs.back()->m_deviceGUI->setWorkspaceIndex(deviceWorkspace->getIndex()); m_deviceUIs.back()->m_mainSpectrumGUI->setWorkspaceIndex(spectrumWorkspace->getIndex()); MainSpectrumGUI *mainSpectrumGUI = m_deviceUIs.back()->m_mainSpectrumGUI; @@ -871,10 +865,10 @@ void MainWindow::sampleMIMOAdd(Workspace *deviceWorkspace, Workspace *spectrumWo void MainWindow::sampleMIMOCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ) { + DeviceAPI *deviceAPI = deviceUISet->m_deviceAPI; int selectedDeviceIndex = deviceIndex; DeviceEnumerator::instance()->changeMIMOSelection(deviceSetIndex, deviceIndex); const PluginInterface::SamplingDevice *samplingDevice = DeviceEnumerator::instance()->getMIMOSamplingDevice(deviceIndex); @@ -917,10 +911,7 @@ void MainWindow::sampleMIMOCreate( deviceAPI->setHardwareUserArguments(userArgs); } - // delete previous plugin GUI if it exists - if (deviceUISet->m_deviceGUI) { - emit deviceUISet->m_deviceGUI->destroy(); - } + // DeviceGUI *oldDeviceGUI = deviceUISet->m_deviceGUI; // store old GUI pointer for later // constructs new GUI and output object DeviceSampleMIMO *mimo = deviceAPI->getPluginInterface()->createSampleMIMOPluginInstance( @@ -995,6 +986,7 @@ void MainWindow::sampleMIMOCreate( void MainWindow::removeDeviceSet(int deviceSetIndex) { + qDebug("MainWindow::removeDeviceSet: index: %d", deviceSetIndex); if (deviceSetIndex >= (int) m_deviceUIs.size()) { return; } @@ -2513,19 +2505,19 @@ void MainWindow::sampleSourceChange(int deviceSetIndex, int newDeviceIndex, Work { qDebug("MainWindow::sampleSourceChange: deviceSet %d workspace: %d", deviceSetIndex, workspace->getIndex()); DeviceUISet *deviceUISet = m_deviceUIs[deviceSetIndex]; - DeviceGUI *gui = deviceUISet->m_deviceGUI; - workspace->removeFromMdiArea(gui); + workspace->removeFromMdiArea(deviceUISet->m_deviceGUI); // deviceUI->m_deviceAPI->saveSamplingDeviceSettings(m_mainCore->m_settings.getWorkingPreset()); // save old API settings deviceUISet->m_deviceAPI->stopDeviceEngine(); // deletes old UI and input object deviceUISet->m_deviceAPI->getSampleSource()->setMessageQueueToGUI(nullptr); // have source stop sending messages to the GUI + //deviceUISet->m_deviceGUI->destroy(); deviceUISet->m_deviceAPI->resetSamplingDeviceId(); deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceInput(deviceUISet->m_deviceAPI->getSampleSource()); deviceUISet->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists - sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet); + sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet); deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex()); workspace->addToMdiArea(deviceUISet->m_deviceGUI); @@ -2554,7 +2546,7 @@ void MainWindow::sampleSinkChange(int deviceSetIndex, int newDeviceIndex, Worksp deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleSinkPluginInstanceOutput(deviceUISet->m_deviceAPI->getSampleSink()); deviceUISet->m_deviceAPI->clearBuddiesLists(); // clear old API buddies lists - sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet); + sampleSinkCreate(deviceSetIndex, newDeviceIndex, deviceUISet); deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex()); workspace->addToMdiArea(deviceUISet->m_deviceGUI); @@ -2582,7 +2574,7 @@ void MainWindow::sampleMIMOChange(int deviceSetIndex, int newDeviceIndex, Worksp deviceUISet->m_deviceAPI->resetSamplingDeviceId(); deviceUISet->m_deviceAPI->getPluginInterface()->deleteSampleMIMOPluginInstanceMIMO(deviceUISet->m_deviceAPI->getSampleMIMO()); - sampleSourceCreate(deviceSetIndex, newDeviceIndex, deviceUISet->m_deviceAPI, deviceUISet); + sampleMIMOCreate(deviceSetIndex, newDeviceIndex, deviceUISet); deviceUISet->m_deviceGUI->setWorkspaceIndex(workspace->getIndex()); workspace->addToMdiArea(deviceUISet->m_deviceGUI); diff --git a/sdrgui/mainwindow.h b/sdrgui/mainwindow.h index bbd510ab3..772b47399 100644 --- a/sdrgui/mainwindow.h +++ b/sdrgui/mainwindow.h @@ -153,19 +153,16 @@ private: void sampleSourceCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ); void sampleSinkCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ); void sampleMIMOCreate( int deviceSetIndex, int deviceIndex, - DeviceAPI *deviceAPI, DeviceUISet *deviceUISet ); void deleteFeature(int featureSetIndex, int featureIndex);