Perseus: fixed unwanted thread stop at sample rate change

pull/147/head
f4exb 2018-02-09 00:53:46 +01:00
rodzic f4bf4d0b99
commit 6cfc99d7d2
1 zmienionych plików z 10 dodań i 1 usunięć

Wyświetl plik

@ -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;