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;