aboutsummaryrefslogtreecommitdiff
path: root/multimedia/qt5-multimedia
diff options
context:
space:
mode:
authorAdriaan de Groot <adridg@FreeBSD.org>2018-01-20 12:45:13 +0000
committerAdriaan de Groot <adridg@FreeBSD.org>2018-01-20 12:45:13 +0000
commit6a6e8b19af086689249c7c4c187cab4cc7b8b92e (patch)
treeaf878656349e1c204a4ed1af078d7f8414f222af /multimedia/qt5-multimedia
parent856421a6277503f5557a5c1b5b38dae7f13f23ea (diff)
downloadports-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/Makefile2
-rw-r--r--multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp70
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;