diff options
author | Adriaan de Groot <adridg@FreeBSD.org> | 2018-01-20 12:45:13 +0000 |
---|---|---|
committer | Adriaan de Groot <adridg@FreeBSD.org> | 2018-01-20 12:45:13 +0000 |
commit | 6a6e8b19af086689249c7c4c187cab4cc7b8b92e (patch) | |
tree | af878656349e1c204a4ed1af078d7f8414f222af /multimedia/qt5-multimedia | |
parent | 856421a6277503f5557a5c1b5b38dae7f13f23ea (diff) | |
download | ports-6a6e8b19af086689249c7c4c187cab4cc7b8b92e.tar.gz ports-6a6e8b19af086689249c7c4c187cab4cc7b8b92e.zip |
Allow ALSA aliases in the Qt5 sound devices list.
Patch by Stephen Hurd, seems to be ignored upstream. The new patch describes
what it does and why it is needed.
PR: 208570
Submitted by: Stephen Hurd
Reported by: Stephen Hurd
Approved by: tcberner (mentor)
Differential Revision: https://reviews.freebsd.org/D13992
Notes
Notes:
svn path=/head/; revision=459518
Diffstat (limited to 'multimedia/qt5-multimedia')
-rw-r--r-- | multimedia/qt5-multimedia/Makefile | 2 | ||||
-rw-r--r-- | multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp | 70 |
2 files changed, 71 insertions, 1 deletions
diff --git a/multimedia/qt5-multimedia/Makefile b/multimedia/qt5-multimedia/Makefile index 73f2be103833..536e56575ab3 100644 --- a/multimedia/qt5-multimedia/Makefile +++ b/multimedia/qt5-multimedia/Makefile @@ -2,7 +2,7 @@ PORTNAME= multimedia DISTVERSION= ${QT5_VERSION} -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= multimedia PKGNAMEPREFIX= qt5- diff --git a/multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp b/multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp new file mode 100644 index 000000000000..9de60f8cc005 --- /dev/null +++ b/multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp @@ -0,0 +1,70 @@ +Patch from Stephen Hurd. PR208570. Allow ALSA aliases. + +When using ALSA with FreeBSD, the direct snd_device instances are not +available, only plugin devices and "default". For programs which use +QAudio, this means there are *no* devices enumerated using +QAudio::availableDevices(). + +The attached patch adds the aliases to the available device list. + +--- src/plugins/alsa/qalsaaudiodeviceinfo.cpp.orig 2017-11-08 14:04:46 UTC ++++ src/plugins/alsa/qalsaaudiodeviceinfo.cpp +@@ -353,6 +353,58 @@ QList<QByteArray> QAlsaAudioDeviceInfo:: + ++n; + } + snd_device_name_free_hint(hints); ++ ++#ifdef Q_OS_FREEBSD ++ // Now find aliases... ++ snd_config_iterator_t pos, next; ++ snd_config_t *top, *node, *type; ++ snd_pcm_t *pcm; ++ snd_pcm_stream_t streamType; ++ const char *idString; ++ const char **ignoreId; ++ static const char *ignore[] = {"hw", "plughw", "plug", "dsnoop", "tee", ++ "file", "null", "shm", "cards", "rate_convert", NULL}; ++ ++ // Populate snd_config... ++ if (snd_config == NULL) ++ snd_config_update(); ++ if (snd_config != NULL) { ++ switch (mode) { ++ case QAudio::AudioInput: ++ streamType = SND_PCM_STREAM_CAPTURE; ++ break; ++ case QAudio::AudioOutput: ++ streamType = SND_PCM_STREAM_PLAYBACK; ++ break; ++ default: ++ goto bad_mode; ++ } ++ // Find "pcm" nodes... ++ if (snd_config_search(snd_config, "pcm", &top) >= 0) { ++ for (pos = snd_config_iterator_first(top), next = snd_config_iterator_next(pos); ++ pos != snd_config_iterator_end(top); ++ pos = next, next = snd_config_iterator_next(pos)) { ++ node = snd_config_iterator_entry(pos); ++ if (snd_config_search(node, "type", &type) < 0) ++ continue; ++ snd_config_get_id(node, &idString); ++ for (ignoreId = ignore; *ignoreId; ignoreId++) { ++ if (strcmp(*ignoreId, idString) == 0) ++ break; ++ } ++ if (*ignoreId) ++ continue; ++ // Ensure it's available... ++ if (snd_pcm_open(&pcm, idString, streamType, 0)) ++ continue; ++ snd_pcm_close(pcm); ++ const QString deviceName = QLatin1String(idString); ++ devices.append(deviceName.toLocal8Bit().constData()); ++ } ++ } ++ } ++bad_mode: ++#endif + #else + int idx = 0; + char* name; |