File 0001-automute-alsa-routes.lua-Dont-register_remove-hooks-if.patch of Package wireplumber

From 6cfaf3f70d686db6fc84a19c275328f0b5218925 Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
Date: Mon, 13 Oct 2025 08:15:55 -0400
Subject: [PATCH] automute-alsa-routes.lua: Don't register/remove hooks if
 never registered/removed before

This avoids avent dispatcher errors in the log.
---
 src/scripts/device/automute-alsa-routes.lua | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/scripts/device/automute-alsa-routes.lua b/src/scripts/device/automute-alsa-routes.lua
index 105f2e68..6297f507 100644
--- a/src/scripts/device/automute-alsa-routes.lua
+++ b/src/scripts/device/automute-alsa-routes.lua
@@ -7,6 +7,7 @@
 
 cutils = require ("common-utils")
 log = Log.open_topic ("s-automute-alsa-routes")
+hooks_registered = false
 
 function setRoute (device, route, mute)
   local param = Pod.Object {
@@ -194,17 +195,19 @@ evaluate_mute_on_node_removed_hook = SimpleEventHook {
 function toggleState ()
   local mute_alsa = Settings.get_boolean ("device.routes.mute-on-alsa-playback-removed")
   local mute_bluez = Settings.get_boolean ("device.routes.mute-on-bluetooth-playback-removed")
-  if mute_alsa or mute_bluez then
+  if (mute_alsa or mute_bluez) and not hooks_registered then
     nodes_info = {}
     mute_alsa_devices_hook:register ()
     update_nodes_info_hook:register ()
     evaluate_mute_on_device_route_changed_hook:register ()
     evaluate_mute_on_node_removed_hook:register ()
-  else
+    hooks_registered = true
+  elseif not mute_alsa and not mute_bluez and hooks_registered then
     mute_alsa_devices_hook:remove ()
     update_nodes_info_hook:remove ()
     evaluate_mute_on_device_route_changed_hook:remove ()
     evaluate_mute_on_node_removed_hook:remove ()
+    hooks_registered = false
   end
 end
 
-- 
GitLab

openSUSE Build Service is sponsored by