From 5b1ed2dc353e7f6c3e843027c9f02a948dd46624 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Mon, 23 Aug 2021 23:59:40 +0100 Subject: [PATCH 1/3] Set audio thread priority in the correct place! --- udphandler.cpp | 6 +++--- udpserver.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/udphandler.cpp b/udphandler.cpp index c320e7d..a7e0717 100644 --- a/udphandler.cpp +++ b/udphandler.cpp @@ -718,7 +718,7 @@ udpAudio::udpAudio(QHostAddress local, QHostAddress ip, quint16 audioPort, audio rxaudio->moveToThread(rxAudioThread); - rxAudioThread->start(); + rxAudioThread->start(QThread::TimeCriticalPriority); connect(this, SIGNAL(setupRxAudio(audioSetup)), rxaudio, SLOT(init(audioSetup))); @@ -735,8 +735,8 @@ udpAudio::udpAudio(QHostAddress local, QHostAddress ip, quint16 audioPort, audio txaudio->moveToThread(txAudioThread); - txAudioThread->start(); - + txAudioThread->start(QThread::TimeCriticalPriority); + connect(this, SIGNAL(setupTxAudio(audioSetup)), txaudio, SLOT(init(audioSetup))); connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater())); diff --git a/udpserver.cpp b/udpserver.cpp index b6eb299..65a26c8 100644 --- a/udpserver.cpp +++ b/udpserver.cpp @@ -384,7 +384,7 @@ void udpServer::controlReceived() txAudioThread = new QThread(this); txaudio->moveToThread(txAudioThread); - txAudioThread->start(); + txAudioThread->start(QThread::TimeCriticalPriority); connect(this, SIGNAL(setupTxAudio(audioSetup)), txaudio, SLOT(init(audioSetup))); connect(txAudioThread, SIGNAL(finished()), txaudio, SLOT(deleteLater())); @@ -402,8 +402,8 @@ void udpServer::controlReceived() rxaudio = new audioHandler(); rxAudioThread = new QThread(this); - rxaudio->moveToThread(rxAudioThread); - rxAudioThread->start(); + + rxAudioThread->start(QThread::TimeCriticalPriority); connect(this, SIGNAL(setupRxAudio(audioSetup)), rxaudio, SLOT(init(audioSetup))); connect(rxAudioThread, SIGNAL(finished()), rxaudio, SLOT(deleteLater())); From 3a9f9db4a3968dc3d45b04ea234933fc5e2861fa Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Fri, 27 Aug 2021 18:06:09 +0100 Subject: [PATCH 2/3] Add saving of meter2 state --- wfmain.cpp | 24 ++++++++++++++++++++---- wfmain.h | 2 ++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 2f94485..95496e7 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -685,6 +685,8 @@ void wfmain::setupMainUI() ui->meter2Widget->hide(); ui->meter2selectionCombo->show(); + ui->meter2selectionCombo->setCurrentIndex((int)prefs.meter2Type); + ui->secondaryMeterSelectionLabel->show(); @@ -1236,6 +1238,7 @@ void wfmain::setDefPrefs() defPrefs.wftheme = static_cast(QCPColorGradient::gpJet); defPrefs.confirmExit = true; defPrefs.confirmPowerOff = true; + defPrefs.meter2Type = meterNone; udpDefPrefs.ipAddress = QString(""); udpDefPrefs.controlLANPort = 50001; @@ -1269,7 +1272,7 @@ void wfmain::loadSettings() setWindowState(Qt::WindowActive); // Works around QT bug to returns window+keyboard focus. prefs.confirmExit = settings->value("ConfirmExit", defPrefs.confirmExit).toBool(); prefs.confirmPowerOff = settings->value("ConfirmPowerOff", defPrefs.confirmPowerOff).toBool(); - + prefs.meter2Type = static_cast(settings->value("Meter2Type", defPrefs.meter2Type).toInt()); settings->endGroup(); // Load color schemes: @@ -1570,6 +1573,7 @@ void wfmain::saveSettings() settings->setValue("WFLength", prefs.wflength); settings->setValue("ConfirmExit", prefs.confirmExit); settings->setValue("ConfirmPowerOff", prefs.confirmPowerOff); + settings->setValue("Meter2Type", (int)prefs.meter2Type); settings->endGroup(); // Radio and Comms: C-IV addr, port to use @@ -3003,6 +3007,16 @@ void wfmain::receiveRigID(rigCapabilities rigCaps) // recalculate command timing now that we know the rig better: calculateTimingParameters(); initPeriodicCommands(); + + for (int i = 0; i < ui->meter2selectionCombo->count(); i++) + { + if (static_cast(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type) + { + qInfo() << "*******setting meter id" << i; + ui->meter2selectionCombo->setCurrentIndex(i); + on_meter2selectionCombo_activated(i); + } + } } } @@ -3218,9 +3232,9 @@ void wfmain::receiveSpectrumData(QByteArray spectrum, double startFreq, double e void wfmain::receiveSpectrumMode(spectrumMode spectMode) { - for(int i=0; i < ui->spectrumModeCombo->count(); i++) + for (int i = 0; i < ui->spectrumModeCombo->count(); i++) { - if(static_cast(ui->spectrumModeCombo->itemData(i).toInt()) == spectMode) + if (static_cast(ui->spectrumModeCombo->itemData(i).toInt()) == spectMode) { ui->spectrumModeCombo->blockSignals(true); ui->spectrumModeCombo->setCurrentIndex(i); @@ -5241,7 +5255,7 @@ void wfmain::on_meter2selectionCombo_activated(int index) meterKind oldMeterType; newMeterType = static_cast(ui->meter2selectionCombo->currentData().toInt()); oldMeterType = ui->meter2Widget->getMeterType(); - + qInfo() << "*******setting meter type" << newMeterType; if(newMeterType == oldMeterType) return; @@ -5259,6 +5273,8 @@ void wfmain::on_meter2selectionCombo_activated(int index) ui->meter2Widget->setMeterType(newMeterType); insertPeriodicCommandUnique(newCmd); } + prefs.meter2Type = newMeterType; + (void)index; } diff --git a/wfmain.h b/wfmain.h index 934870d..390b161 100644 --- a/wfmain.h +++ b/wfmain.h @@ -477,6 +477,7 @@ private slots: void on_rigctldPortTxt_editingFinished(); + private: Ui::wfmain *ui; void closeEvent(QCloseEvent *event); @@ -703,6 +704,7 @@ private: int wftheme; bool confirmExit; bool confirmPowerOff; + meterKind meter2Type; // plot scheme } prefs; From 97e5ff9ff8d9e9c411391c937d66b945062de144 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Fri, 27 Aug 2021 18:07:45 +0100 Subject: [PATCH 3/3] Remove unneeded debugging --- wfmain.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wfmain.cpp b/wfmain.cpp index 95496e7..e8455af 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -3008,13 +3008,15 @@ void wfmain::receiveRigID(rigCapabilities rigCaps) calculateTimingParameters(); initPeriodicCommands(); + // Set the second meter here as I suspect we need to be connected for it to work? for (int i = 0; i < ui->meter2selectionCombo->count(); i++) { if (static_cast(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type) { - qInfo() << "*******setting meter id" << i; + // I thought that setCurrentIndex() would call the activated() function for the combobox + // but it doesn't, so call it manually. ui->meter2selectionCombo->setCurrentIndex(i); - on_meter2selectionCombo_activated(i); + on_meter2selectionCombo_activated(i); } } } @@ -5255,7 +5257,6 @@ void wfmain::on_meter2selectionCombo_activated(int index) meterKind oldMeterType; newMeterType = static_cast(ui->meter2selectionCombo->currentData().toInt()); oldMeterType = ui->meter2Widget->getMeterType(); - qInfo() << "*******setting meter type" << newMeterType; if(newMeterType == oldMeterType) return;