summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cord-Landwehr <andreas.cord-landwehr@claas.com>2023-09-21 17:13:07 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-09-25 15:26:52 +0000
commit7ec22996aa28c11604d72aa2bbae659cf0329304 (patch)
tree3579bc6042491a152c08f33eb59991ecc900dcfe
parentff7ebdbaf55b9b6023352f9567834e543475af1e (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.cpp11
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;
}