From 0d008dce75456c31a5c8d1110a1659c3636be833 Mon Sep 17 00:00:00 2001 From: Julian Bouzas Date: Wed, 5 Jan 2022 11:24:13 -0500 Subject: [PATCH] m-default-nodes-api: don't return stream node if default node name matches Stream nodes can never be default nodes, so we skip them in case they have the same name as the actual default node. Fixes #130 --- modules/module-default-nodes-api.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/module-default-nodes-api.c b/modules/module-default-nodes-api.c index e5f7ca5a..16b74c8d 100644 --- a/modules/module-default-nodes-api.c +++ b/modules/module-default-nodes-api.c @@ -162,13 +162,20 @@ wp_default_nodes_api_get_default_node (WpDefaultNodesApi * self, } if (node_t != -1 && self->defaults[node_t]) { - g_autoptr (WpNode) node = wp_object_manager_lookup (self->om, + g_autoptr (WpIterator) it = NULL; + g_auto (GValue) val = G_VALUE_INIT; + it = wp_object_manager_new_filtered_iterator (self->om, WP_TYPE_NODE, WP_CONSTRAINT_TYPE_PW_PROPERTY, PW_KEY_NODE_NAME, "=s", self->defaults[node_t], NULL); - if (node) - return wp_proxy_get_bound_id (WP_PROXY (node)); + for (; wp_iterator_next (it, &val); g_value_unset (&val)) { + WpNode *node = g_value_get_object (&val); + const gchar *mc = wp_pipewire_object_get_property ( + WP_PIPEWIRE_OBJECT (node), PW_KEY_MEDIA_CLASS); + if (!g_str_has_prefix (mc, "Stream/")) + return wp_proxy_get_bound_id (WP_PROXY (node)); + } } return SPA_ID_INVALID; }