commit:     d20fea5200a3c33b1873f28cb48f7c3f658503d5
Author:     Niklāvs Koļesņikovs <89q1r14hd <AT> relay <DOT> firefox <DOT> com>
AuthorDate: Fri Jan 14 18:25:44 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Jan 14 19:57:22 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d20fea52

media-video/wireplumber: add fix for Pro Audio breaking PA routing

Signed-off-by: Niklāvs Koļesņikovs <89q1r14hd <AT> relay.firefox.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...default-nodes-handle-nodes-without-Routes.patch | 48 ++++++++++++++++++++++
 ...er-0.4.7.ebuild => wireplumber-0.4.7-r1.ebuild} |  4 ++
 2 files changed, 52 insertions(+)

diff --git 
a/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch
 
b/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch
new file mode 100644
index 000000000000..aeb5ce067615
--- /dev/null
+++ 
b/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch
@@ -0,0 +1,48 @@
+From 211f1e6b6cd4898121e4c2b821fae4dea6cc3317 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <[email protected]>
+Date: Fri, 14 Jan 2022 16:28:48 +0100
+Subject: [PATCH] default-nodes: handle nodes without Routes
+
+When a node has not part of any EnumRoute, we must assume it is
+available.
+
+Fixes selection of Pro Audio nodes as default nodes.
+---
+ modules/module-default-nodes.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/modules/module-default-nodes.c b/modules/module-default-nodes.c
+index 32b2725b..15aadeaa 100644
+--- a/modules/module-default-nodes.c
++++ b/modules/module-default-nodes.c
+@@ -108,6 +108,7 @@ node_has_available_routes (WpDefaultNodes * self, WpNode 
*node)
+   gint dev_id = dev_id_str ? atoi (dev_id_str) : -1;
+   gint cpd = cpd_str ? atoi (cpd_str) : -1;
+   g_autoptr (WpDevice) device = NULL;
++  gint found = 0;
+ 
+   if (dev_id == -1 || cpd == -1)
+     return TRUE;
+@@ -168,6 +169,7 @@ node_has_available_routes (WpDefaultNodes * self, WpNode 
*node)
+         for (; wp_iterator_next (it, &v); g_value_unset (&v)) {
+           gint32 *d = (gint32 *)g_value_get_pointer (&v);
+           if (d && *d == cpd) {
++            found++;
+             if (route_avail != SPA_PARAM_AVAILABILITY_no)
+               return TRUE;
+           }
+@@ -175,6 +177,10 @@ node_has_available_routes (WpDefaultNodes * self, WpNode 
*node)
+       }
+     }
+   }
++  /* The node is part of a profile without routes so we assume it
++   * is available. This can happen for Pro Audio profiles */
++  if (found == 0)
++    return TRUE;
+ 
+   return FALSE;
+ }
+-- 
+GitLab
+
+https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/211f1e6b6cd4898121e4c2b821fae4dea6cc3317

diff --git a/media-video/wireplumber/wireplumber-0.4.7.ebuild 
b/media-video/wireplumber/wireplumber-0.4.7-r1.ebuild
similarity index 97%
rename from media-video/wireplumber/wireplumber-0.4.7.ebuild
rename to media-video/wireplumber/wireplumber-0.4.7-r1.ebuild
index 2e6c068b1ee9..bbd72a311e17 100644
--- a/media-video/wireplumber/wireplumber-0.4.7.ebuild
+++ b/media-video/wireplumber/wireplumber-0.4.7-r1.ebuild
@@ -54,6 +54,10 @@ RDEPEND="${DEPEND}"
 
 DOCS=( {NEWS,README}.rst )
 
+PATCHES=(
+       "$FILESDIR"/${P}-default-nodes-handle-nodes-without-Routes.patch
+)
+
 src_configure() {
        local emesonargs=(
                -Ddoc=disabled # Ebuild not wired up yet (Sphinx, Doxygen?)

Reply via email to