diff options
author | Andreas Cord-Landwehr <andreas.cord-landwehr@claas.com> | 2023-09-21 17:13:07 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-09-25 15:26:52 +0000 |
commit | 7ec22996aa28c11604d72aa2bbae659cf0329304 (patch) | |
tree | 3579bc6042491a152c08f33eb59991ecc900dcfe | |
parent | ff7ebdbaf55b9b6023352f9567834e543475af1e (diff) |
Always provide ALSA default device
In several ALSA setups, specifically on embedded devices, there is no
"default" device when iterating over devices via snd_device_name_hint.
For such situation, bring back the Qt5 ALSA logic to always generate a
"default" interface and provide as first device.
Change-Id: I32ee48b436544991a6790775024655b2ec736b53
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit 4fafcd6d2c164472ce63d5f09614b7e073c74bea)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit a0de4480a7584ece9b6867e3b25a7b770dcb3447)
-rw-r--r-- | src/multimedia/alsa/qalsamediadevices.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/multimedia/alsa/qalsamediadevices.cpp b/src/multimedia/alsa/qalsamediadevices.cpp index cc37e0601..98b4c1362 100644 --- a/src/multimedia/alsa/qalsamediadevices.cpp +++ b/src/multimedia/alsa/qalsamediadevices.cpp @@ -27,6 +27,7 @@ static QList<QAudioDevice> availableDevices(QAudioDevice::Mode mode) // Create a list of all current audio devices that support mode void **hints, **n; char *name, *descr, *io; + bool hasDefault = false; if(snd_device_name_hint(-1, "pcm", &hints) < 0) { qWarning() << "no alsa devices available"; @@ -49,8 +50,10 @@ static QList<QAudioDevice> availableDevices(QAudioDevice::Mode mode) if ((descr != NULL) && ((io == NULL) || (io == filter))) { auto *infop = new QAlsaAudioDeviceInfo(name, QString::fromUtf8(descr), mode); devices.append(infop->create()); - if (strcmp(name, "default") == 0) + if (strcmp(name, "default") == 0) { infop->isDefault = true; + hasDefault = true; + } } free(descr); @@ -61,6 +64,12 @@ static QList<QAudioDevice> availableDevices(QAudioDevice::Mode mode) } snd_device_name_free_hint(hints); + if (!hasDefault && devices.size() > 0) { + auto infop = new QAlsaAudioDeviceInfo("default", QString(), QAudioDevice::Output); + infop->isDefault = true; + devices.prepend(infop->create()); + } + return devices; } |