mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-10-08 08:10:35 -04:00
Apply only the settings keys given, rather than copying the whole settings
These keyed applySettings copied the whole settings struct on every message. A GUI sends messages with no keys while its window is being laid out, carrying its own copy of the settings, and one arriving after an API patch but before the GUI has seen it wrote the old values back, so the patched value was lost and the API read back what it had replaced. The AIS demodulator lost the inputFrequencyOffset set at creation this way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
345ccdf6e9
commit
da31464dd2
@@ -161,7 +161,11 @@ void ChannelAnalyzerBaseband::applySettings(const ChannelAnalyzerSettings& setti
|
||||
}
|
||||
|
||||
m_sink.applySettings(settings, settingsKeys, force);
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
int ChannelAnalyzerBaseband::getChannelSampleRate() const
|
||||
|
||||
@@ -324,7 +324,11 @@ void AISDemod::applySettings(const AISDemodSettings& settings, const QStringList
|
||||
}
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray AISDemod::serialize() const
|
||||
|
||||
@@ -395,7 +395,11 @@ void LocalSink::applySettings(const LocalSinkSettings& settings, const QList<QSt
|
||||
sendChannelSettings(pipes, settingsKeys, settings, force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
void LocalSink::validateFilterChainHash(LocalSinkSettings& settings)
|
||||
|
||||
@@ -111,7 +111,11 @@ void AntennaTools::applySettings(const AntennaToolsSettings& settings, const QLi
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
int AntennaTools::webapiSettingsGet(
|
||||
|
||||
@@ -237,7 +237,11 @@ void APRS::applySettings(const APRSSettings& settings, const QList<QString>& set
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
int APRS::webapiRun(bool run,
|
||||
|
||||
@@ -184,7 +184,11 @@ void JogdialController::applySettings(const JogdialControllerSettings& settings,
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
void JogdialController::updateChannels()
|
||||
|
||||
@@ -206,7 +206,11 @@ void PERTester::applySettings(const PERTesterSettings& settings, const QList<QSt
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
int PERTester::webapiRun(bool run,
|
||||
|
||||
@@ -267,7 +267,11 @@ void StarTracker::applySettings(const StarTrackerSettings& settings, const QList
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
int StarTracker::webapiRun(bool run,
|
||||
|
||||
@@ -357,7 +357,11 @@ void VORLocalizer::applySettings(const VORLocalizerSettings& settings, const QLi
|
||||
webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force);
|
||||
}
|
||||
|
||||
m_settings = settings;
|
||||
if (force) {
|
||||
m_settings = settings;
|
||||
} else {
|
||||
m_settings.applySettings(settingsKeys, settings);
|
||||
}
|
||||
}
|
||||
|
||||
void VORLocalizer::updateChannels()
|
||||
|
||||
Reference in New Issue
Block a user