1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-07 08:24:43 -04:00

Demod Analyzer feature: Make settings assignments atomic. Part of #1329

This commit is contained in:
f4exb
2022-11-23 23:08:41 +01:00
parent 5f3052ef70
commit c4b33d87be
8 changed files with 159 additions and 65 deletions
@@ -216,7 +216,7 @@ bool DemodAnalyzerWorker::handleMessage(const Message& cmd)
MsgConfigureDemodAnalyzerWorker& cfg = (MsgConfigureDemodAnalyzerWorker&) cmd;
qDebug("DemodAnalyzerWorker::handleMessage: MsgConfigureDemodAnalyzerWorker");
applySettings(cfg.getSettings(), cfg.getForce());
applySettings(cfg.getSettings(), cfg.getSettingsKeys(), cfg.getForce());
return true;
}
@@ -255,18 +255,11 @@ bool DemodAnalyzerWorker::handleMessage(const Message& cmd)
}
}
void DemodAnalyzerWorker::applySettings(const DemodAnalyzerSettings& settings, bool force)
void DemodAnalyzerWorker::applySettings(const DemodAnalyzerSettings& settings, const QList<QString>& settingsKeys, bool force)
{
qDebug() << "DemodAnalyzerWorker::applySettings:"
<< " m_title: " << settings.m_title
<< " m_rgbColor: " << settings.m_rgbColor
<< " m_log2Decim: " << settings.m_log2Decim
<< " m_fileRecordName: " << settings.m_fileRecordName
<< " m_recordToFile: " << settings.m_recordToFile
<< " m_recordSilenceTime: " << settings.m_recordSilenceTime
<< " force: " << force;
qDebug() << "DemodAnalyzerWorker::applySettings:" << settings.getDebugString(settingsKeys, force) << force;
if ((m_settings.m_fileRecordName != settings.m_fileRecordName) || force)
if (settingsKeys.contains("fileRecordName") || force)
{
if (m_wavFileRecord)
{
@@ -293,7 +286,7 @@ void DemodAnalyzerWorker::applySettings(const DemodAnalyzerSettings& settings, b
}
}
if ((m_settings.m_recordToFile != settings.m_recordToFile) || force)
if (settingsKeys.contains("recordToFile") || force)
{
if (m_wavFileRecord)
{
@@ -314,8 +307,8 @@ void DemodAnalyzerWorker::applySettings(const DemodAnalyzerSettings& settings, b
}
}
if ((m_settings.m_recordSilenceTime != settings.m_recordSilenceTime)
|| (m_settings.m_log2Decim != settings.m_log2Decim) || force)
if (settingsKeys.contains("recordSilenceTime")
|| settingsKeys.contains("log2Decim") || force)
{
m_recordSilenceNbSamples = (settings.m_recordSilenceTime * (m_sinkSampleRate / (1<<settings.m_log2Decim))) / 10; // time in 100'ś ms
m_recordSilenceCount = 0;
@@ -330,7 +323,12 @@ void DemodAnalyzerWorker::applySettings(const DemodAnalyzerSettings& settings, b
}
}
m_settings = settings;
if (force) {
m_settings = settings;
} else {
m_settings.applySettings(settingsKeys, settings);
}
}
void DemodAnalyzerWorker::applySampleRate(int sampleRate)