From 6cfc99d7d2a75705ab99c303d6ca752223a340e2 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 9 Feb 2018 00:53:46 +0100 Subject: [PATCH] Perseus: fixed unwanted thread stop at sample rate change --- plugins/samplesource/perseus/perseusinput.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/samplesource/perseus/perseusinput.cpp b/plugins/samplesource/perseus/perseusinput.cpp index 7c19c5cf9..17e1f0094 100644 --- a/plugins/samplesource/perseus/perseusinput.cpp +++ b/plugins/samplesource/perseus/perseusinput.cpp @@ -301,7 +301,7 @@ bool PerseusInput::applySettings(const PerseusSettings& settings, bool force) if (m_perseusDescriptor != 0) { - int rate = m_sampleRates[m_settings.m_devSampleRateIndex < m_sampleRates.size() ? m_settings.m_devSampleRateIndex: 0]; + int rate = m_sampleRates[settings.m_devSampleRateIndex < m_sampleRates.size() ? settings.m_devSampleRateIndex: 0]; int rc = perseus_set_sampling_rate(m_perseusDescriptor, rate); if (rc < 0) { @@ -379,6 +379,15 @@ bool PerseusInput::applySettings(const PerseusSettings& settings, bool force) m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); } + if ((m_settings.m_devSampleRateIndex != settings.m_devSampleRateIndex) || force) + { + if (m_perseusThread && m_perseusThread->isRunning()) + { + m_perseusThread->stopWork(); + m_perseusThread->startWork(); + } + } + m_settings = settings; m_settings.m_devSampleRateIndex = sampleRateIndex; return true;