File 0003-default-nodes-Never-consider-Audio_Sink-nodes-as-best-for.patch of Package wireplumber

From 80842cbb965608bd76520af91dad40686f202285 Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
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)
-- 
GitLab

openSUSE Build Service is sponsored by