SHA256
1
0
forked from pool/wireplumber
wireplumber/0002-default-nodes-handle-nodes-without-Routes.patch
Antonio Larrosa 8fc7b977aa Accepting request 946457 from home:alarrosa:branches:multimedia:libs
- Add patch from upstream to fix a problem changing the default
  device:
  * 0001-default-nodes-increase-priority-if-node-has-available-routes.patch
- Add patch from upstream to fix selection of Pro Audio nodes
  as default nodes:
  * 0002-default-nodes-handle-nodes-without-Routes.patch

OBS-URL: https://build.opensuse.org/request/show/946457
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=20
2022-01-14 16:07:09 +00:00

48 lines
1.5 KiB
Diff

From 211f1e6b6cd4898121e4c2b821fae4dea6cc3317 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
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