From 80842cbb965608bd76520af91dad40686f202285 Mon Sep 17 00:00:00 2001 From: Julian Bouzas Date: Wed, 21 Jan 2026 10:49:13 -0500 Subject: [PATCH] default-nodes: Never consider Audio/Sink nodes as best for default audio.source node type Audio/Sink nodes should only be used as default audio source node type if the user has explicitly selected it. If the user has not explicitly selected it, we should always ignore it and instead select the highest priority Audio/Source node. Fixes #886 --- src/scripts/default-nodes/find-best-default-node.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/scripts/default-nodes/find-best-default-node.lua b/src/scripts/default-nodes/find-best-default-node.lua index a8a1262e..08643e8b 100644 --- a/src/scripts/default-nodes/find-best-default-node.lua +++ b/src/scripts/default-nodes/find-best-default-node.lua @@ -18,6 +18,8 @@ SimpleEventHook { }, }, execute = function (event) + local props = event:get_properties () + local def_node_type = props ["default-node.type"] local available_nodes = event:get_data ("available-nodes") local selected_prio = event:get_data ("selected-node-priority") or 0 local selected_route_prio = event:get_data ("selected-route-priority") or 0 @@ -37,6 +39,12 @@ SimpleEventHook { -- Highest priority node wins local priority = nutils.get_session_priority (node_props) local route_priority = nutils.get_route_priority (node_props) + local media_class = node_props ["media.class"] + + -- Never consider sink nodes as best if audio.source is the def node type + if media_class == "Audio/Sink" and def_node_type == "audio.source" then + goto skip_node + end if selected_node == nil or priority > selected_prio or @@ -46,6 +54,8 @@ SimpleEventHook { selected_route_prio = route_priority selected_node = node_props ["node.name"] end + + ::skip_node:: end event:set_data ("selected-node-priority", selected_prio)