[AFV] Ref T739, encapsulate defaultXXDevice calls

* based on bug: https://bugreports.qt.io/plugins/servlet/mobile#issue/QTBUG-55631
* approach: avoid calls to default device (did not work out)
* kept encapsulation as it easier allows to text/apply workarounds
This commit is contained in:
Klaus Basan
2019-10-17 01:47:59 +02:00
parent 2dbe8464f4
commit 9959b12b9d
3 changed files with 50 additions and 13 deletions

View File

@@ -141,10 +141,8 @@ namespace BlackMisc
CAudioDeviceInfoList CAudioDeviceInfoList::allInputDevices()
{
const QList<QAudioDeviceInfo> inputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
CAudioDeviceInfoList devices;
for (const QAudioDeviceInfo &inputDevice : inputDevices)
for (const QAudioDeviceInfo &inputDevice : allQtInputDevices())
{
const CAudioDeviceInfo d(CAudioDeviceInfo::InputDevice, inputDevice.deviceName());
if (! devices.contains(d)) { devices.push_back(d); }
@@ -154,10 +152,8 @@ namespace BlackMisc
CAudioDeviceInfoList CAudioDeviceInfoList::allOutputDevices()
{
const QList<QAudioDeviceInfo> outputDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
CAudioDeviceInfoList devices;
for (const QAudioDeviceInfo &outputDevice : outputDevices)
for (const QAudioDeviceInfo &outputDevice : allQtOutputDevices())
{
const CAudioDeviceInfo d(CAudioDeviceInfo::OutputDevice, outputDevice.deviceName());
if (! devices.contains(d)) { devices.push_back(d); }
@@ -172,5 +168,39 @@ namespace BlackMisc
return i;
}
QList<QAudioDeviceInfo> CAudioDeviceInfoList::allQtInputDevices()
{
const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
return devices;
}
QList<QAudioDeviceInfo> CAudioDeviceInfoList::allQtOutputDevices()
{
const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
return devices;
}
QAudioDeviceInfo CAudioDeviceInfoList::defaultInputDevice()
{
return QAudioDeviceInfo::defaultInputDevice();
/**
const QList<QAudioDeviceInfo> devices = allQtInputDevices();
if (devices.isEmpty()) { return devices.front(); }
return QAudioDeviceInfo();
**/
}
QAudioDeviceInfo CAudioDeviceInfoList::defaultOutputDevice()
{
return QAudioDeviceInfo::defaultOutputDevice();
/**
const QList<QAudioDeviceInfo> devices = allQtOutputDevices();
if (devices.isEmpty()) { return devices.front(); }
return QAudioDeviceInfo();
**/
}
} // namespace
} // namespace

View File

@@ -12,12 +12,13 @@
#define BLACKMISC_AUDIO_AUDIODEVICELIST_H
#include "blackmisc/audio/audiodeviceinfo.h"
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/collection.h"
#include "blackmisc/sequence.h"
#include "blackmisc/variant.h"
#include "blackmisc/blackmiscexport.h"
#include <QMetaType>
#include <QAudioDeviceInfo>
#include <QStringList>
namespace BlackMisc
@@ -82,6 +83,10 @@ namespace BlackMisc
static CAudioDeviceInfoList allInputDevices();
static CAudioDeviceInfoList allOutputDevices();
static CAudioDeviceInfoList allDevices();
static QList<QAudioDeviceInfo> allQtInputDevices();
static QList<QAudioDeviceInfo> allQtOutputDevices();
static QAudioDeviceInfo defaultInputDevice();
static QAudioDeviceInfo defaultOutputDevice();
//! @}
};
} //namespace