mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-09-29 16:26:47 -04:00
AudioDeviceManager: fix device infos cleanup segfault due to iterator processing
This commit is contained in:
parent
d79e8a4495
commit
15bc1e2149
@ -669,18 +669,24 @@ void AudioDeviceManager::inputInfosCleanup()
|
|||||||
deviceNames.insert(m_defaultDeviceName);
|
deviceNames.insert(m_defaultDeviceName);
|
||||||
QList<QAudioDeviceInfo>::const_iterator itd = m_inputDevicesInfo.begin();
|
QList<QAudioDeviceInfo>::const_iterator itd = m_inputDevicesInfo.begin();
|
||||||
|
|
||||||
for (; itd != m_inputDevicesInfo.end(); ++itd) {
|
for (; itd != m_inputDevicesInfo.end(); ++itd)
|
||||||
|
{
|
||||||
|
qDebug("AudioDeviceManager::inputInfosCleanup: device: %s", qPrintable(itd->deviceName()));
|
||||||
deviceNames.insert(itd->deviceName());
|
deviceNames.insert(itd->deviceName());
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<QString, InputDeviceInfo>::iterator itm = m_audioInputInfos.begin();
|
QMap<QString, InputDeviceInfo>::iterator itm = m_audioInputInfos.begin();
|
||||||
|
|
||||||
for (; itm != m_audioInputInfos.end(); ++itm)
|
for (; itm != m_audioInputInfos.end();)
|
||||||
{
|
{
|
||||||
if (!deviceNames.contains(itm.key()))
|
if (!deviceNames.contains(itm.key()))
|
||||||
{
|
{
|
||||||
qDebug("AudioDeviceManager::inputInfosCleanup: removing key: %s", qPrintable(itm.key()));
|
qDebug("AudioDeviceManager::inputInfosCleanup: removing key: %s", qPrintable(itm.key()));
|
||||||
m_audioInputInfos.remove(itm.key());
|
m_audioInputInfos.erase(itm++);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
++itm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -691,18 +697,24 @@ void AudioDeviceManager::outputInfosCleanup()
|
|||||||
deviceNames.insert(m_defaultDeviceName);
|
deviceNames.insert(m_defaultDeviceName);
|
||||||
QList<QAudioDeviceInfo>::const_iterator itd = m_outputDevicesInfo.begin();
|
QList<QAudioDeviceInfo>::const_iterator itd = m_outputDevicesInfo.begin();
|
||||||
|
|
||||||
for (; itd != m_outputDevicesInfo.end(); ++itd) {
|
for (; itd != m_outputDevicesInfo.end(); ++itd)
|
||||||
|
{
|
||||||
|
qDebug("AudioDeviceManager::outputInfosCleanup: device: %s", qPrintable(itd->deviceName()));
|
||||||
deviceNames.insert(itd->deviceName());
|
deviceNames.insert(itd->deviceName());
|
||||||
}
|
}
|
||||||
|
|
||||||
QMap<QString, OutputDeviceInfo>::iterator itm = m_audioOutputInfos.begin();
|
QMap<QString, OutputDeviceInfo>::iterator itm = m_audioOutputInfos.begin();
|
||||||
|
|
||||||
for (; itm != m_audioOutputInfos.end(); ++itm)
|
for (; itm != m_audioOutputInfos.end();)
|
||||||
{
|
{
|
||||||
if (!deviceNames.contains(itm.key()))
|
if (!deviceNames.contains(itm.key()))
|
||||||
{
|
{
|
||||||
qDebug("AudioDeviceManager::outputInfosCleanup: removing key: %s", qPrintable(itm.key()));
|
qDebug("AudioDeviceManager::outputInfosCleanup: removing key: %s", qPrintable(itm.key()));
|
||||||
m_audioOutputInfos.remove(itm.key());
|
m_audioOutputInfos.erase(itm++);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
++itm;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user