Page MenuHomeFreeBSD

D13992.id.diff
No OneTemporary

D13992.id.diff

Index: head/multimedia/qt5-multimedia/Makefile
===================================================================
--- head/multimedia/qt5-multimedia/Makefile
+++ head/multimedia/qt5-multimedia/Makefile
@@ -2,7 +2,7 @@
PORTNAME= multimedia
DISTVERSION= ${QT5_VERSION}
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= multimedia
PKGNAMEPREFIX= qt5-
Index: head/multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp
===================================================================
--- head/multimedia/qt5-multimedia/files/patch-src_plugins_alsa_qalsaaudiodeviceinfo.cpp
+++ head/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;

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 20, 5:17 PM (1 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31853248
Default Alt Text
D13992.id.diff (3 KB)

Event Timeline