From 3b984e5e8d98e994c4565bcbeffab71e80194389 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 14 Jan 2022 17:21:25 +0100 Subject: [PATCH] Add patch to fix default device. --- ...lt-nodes-handle-nodes-without-Routes.patch | 47 +++++++++++++++++++ wireplumber.spec | 6 ++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 0001-default-nodes-handle-nodes-without-Routes.patch diff --git a/0001-default-nodes-handle-nodes-without-Routes.patch b/0001-default-nodes-handle-nodes-without-Routes.patch new file mode 100644 index 0000000..c71df31 --- /dev/null +++ b/0001-default-nodes-handle-nodes-without-Routes.patch @@ -0,0 +1,47 @@ +From 6d4c8b732dfa143652421368f322ffa67942f438 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +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 ac9a87b..5eddacb 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; + } +-- +2.31.1 + diff --git a/wireplumber.spec b/wireplumber.spec index 544c9ba..b3603b5 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,6 +1,6 @@ Name: wireplumber Version: 0.4.7 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A modular session/policy manager for PipeWire License: MIT @@ -8,6 +8,7 @@ URL: https://pipewire.pages.freedesktop.org/wireplumber/ Source0: https://gitlab.freedesktop.org/pipewire/%{name}/-/archive/%{version}/%{name}-%{version}.tar.bz2 ## upstream patches +Patch0001: 0001-default-nodes-handle-nodes-without-Routes.patch ## upstreamable patches @@ -115,6 +116,9 @@ fi %{_datadir}/gir-1.0/Wp-0.4.gir %changelog +* Fri Jan 13 2022 Wim Taymans - 0.4.7-2 +- Add patch to fix default device. + * Thu Jan 13 2022 Wim Taymans - 0.4.7-1 - wireplumber 0.4.7