summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin McPherson <justin.mcpherson@nokia.com>2010-10-01 15:09:26 +1000
committerJustin McPherson <justin.mcpherson@nokia.com>2010-10-01 15:17:07 +1000
commit8b7266c22552599d6fa3cbb6e56ace8ce99695e8 (patch)
treec718688ccebcc834e1ed6597f704578f201f3a76
parente90d7c5b9b4df9694580161186268c82907da634 (diff)
QAudioOutput(ALSA); Fix check for available devices.
ALSA can return a list of one empty item when no devices are available. Task-number: QTMOBILITY-526, QTBUG-12690 Reviewed-by: Andrew den Exter
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
index ec0f3abdc8..a5cb59a3e7 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -429,21 +429,24 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
while (*n != NULL) {
name = snd_device_name_get_hint(*n, "NAME");
- descr = snd_device_name_get_hint(*n, "DESC");
- io = snd_device_name_get_hint(*n, "IOID");
- if((name != NULL) && (descr != NULL) && ((io == NULL) || (io == filter))) {
- QString deviceName = QLatin1String(name);
- QString deviceDescription = QLatin1String(descr);
- allDevices.append(deviceName.toLocal8Bit().constData());
- if(deviceDescription.contains(QLatin1String("Default Audio Device")))
- devices.append(deviceName.toLocal8Bit().constData());
- }
- if(name != NULL)
+ if (name != 0 && qstrcmp(name, "null") != 0) {
+ descr = snd_device_name_get_hint(*n, "DESC");
+ io = snd_device_name_get_hint(*n, "IOID");
+
+ if ((descr != NULL) && ((io == NULL) || (io == filter))) {
+ QString deviceName = QLatin1String(name);
+ QString deviceDescription = QLatin1String(descr);
+ allDevices.append(deviceName.toLocal8Bit().constData());
+ if (deviceDescription.contains(QLatin1String("Default Audio Device")))
+ devices.append(deviceName.toLocal8Bit().constData());
+ }
+
free(name);
- if(descr != NULL)
- free(descr);
- if(io != NULL)
- free(io);
+ if (descr != NULL)
+ free(descr);
+ if (io != NULL)
+ free(io);
+ }
++n;
}
snd_device_name_free_hint(hints);