From 5473621bde2be226f2f3687a80b4bfc93bbbe572 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 3 May 2016 16:01:45 +0200 Subject: ALSA: improve handling of default device. - "default" is a valid argument for snd_pcm_open(), let ALSA handle that case rather than using the first device in the list. - Don't add "default" in the list of available devices if there is already one. Change-Id: Icd41aa6677923a79faf6c90d0627eedd8700b91b Reviewed-by: Christian Stromme --- src/plugins/alsa/qalsaaudioinput.cpp | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) (limited to 'src/plugins/alsa/qalsaaudioinput.cpp') diff --git a/src/plugins/alsa/qalsaaudioinput.cpp b/src/plugins/alsa/qalsaaudioinput.cpp index 5f7a788a6..2d636d1e5 100644 --- a/src/plugins/alsa/qalsaaudioinput.cpp +++ b/src/plugins/alsa/qalsaaudioinput.cpp @@ -300,34 +300,16 @@ bool QAlsaAudioInput::open() } - QString dev = QString(QLatin1String(m_device.constData())); - QList devices = QAlsaAudioDeviceInfo::availableDevices(QAudio::AudioInput); - if(dev.compare(QLatin1String("default")) == 0) { -#if SND_LIB_VERSION >= 0x1000e // 1.0.14 - if (devices.size() > 0) - dev = QLatin1String(devices.first()); - else - return false; -#else - dev = QLatin1String("hw:0,0"); -#endif - } else { -#if SND_LIB_VERSION >= 0x1000e // 1.0.14 - dev = QLatin1String(m_device); -#else - int idx = 0; - char *name; - - QString shortName = QLatin1String(m_device.mid(m_device.indexOf('=',0)+1).constData()); + if (!QAlsaAudioDeviceInfo::availableDevices(QAudio::AudioOutput).contains(m_device)) + return false; - while(snd_card_get_name(idx,&name) == 0) { - if(qstrncmp(shortName.toLocal8Bit().constData(),name,shortName.length()) == 0) - break; - idx++; - } - dev = QString(QLatin1String("hw:%1,0")).arg(idx); + QString dev; +#if SND_LIB_VERSION < 0x1000e // 1.0.14 + if (m_device != "default") + dev = QAlsaAudioDeviceInfo::deviceFromCardName(m_device); + else #endif - } + dev = m_device; // Step 1: try and open the device while((count < 5) && (err < 0)) { -- cgit v1.2.3