wireplumber/0001-alsa.lua-remove-the-disabled-entities-from-the-names-table.patch
Antonio Larrosa d503c29728 Accepting request 1035773 from home:alarrosa:branches:multimedia:libs
- Add patch from upstream to work around a problem when a link is
  not activated:
  * 0001-policy-node-wait-for-unactivated-links-instead-of-removing.patch
- Add patch from upstream to fix handling null devices which result
  in lua exceptions:
  * 0001-alsa.lua-remove-the-disabled-entities-from-the-names-table.patch

OBS-URL: https://build.opensuse.org/request/show/1035773
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=52
2022-11-15 08:32:16 +00:00

61 lines
2.0 KiB
Diff

From e77ad8c0c024529deb4de5ebd69009a0cec11a78 Mon Sep 17 00:00:00 2001
From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
Date: Tue, 8 Nov 2022 04:20:21 +0530
Subject: [PATCH] alsa.lua: remove the disabled entities from the names table
entities here are the device cards and the device nodes.
sometimes null device objects are reported by monitor, this results in lua
exceptions handle this use case.
Fixes #361
---
src/scripts/monitors/alsa.lua | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/scripts/monitors/alsa.lua b/src/scripts/monitors/alsa.lua
index 660c47c0..195c0916 100644
--- a/src/scripts/monitors/alsa.lua
+++ b/src/scripts/monitors/alsa.lua
@@ -175,6 +175,7 @@ function createNode(parent, id, obj_type, factory, properties)
-- apply properties from config.rules
rulesApplyProperties(properties)
if properties["node.disabled"] then
+ node_names_table [properties ["node.name"]] = nil
return
end
@@ -190,6 +191,10 @@ function createDevice(parent, id, factory, properties)
device:connect("create-object", createNode)
device:connect("object-removed", function (parent, id)
local node = parent:get_managed_object(id)
+ if not node then
+ return
+ end
+
node_names_table[node.properties["node.name"]] = nil
end)
device:activate(Feature.SpaDevice.ENABLED | Feature.Proxy.BOUND)
@@ -269,6 +274,7 @@ function prepareDevice(parent, id, obj_type, factory, properties)
-- apply properties from config.rules
rulesApplyProperties(properties)
if properties["device.disabled"] then
+ device_names_table [properties ["device.name"]] = nil
return
end
@@ -346,6 +352,10 @@ function createMonitor ()
-- handle object-removed to destroy device reservations and recycle device name
m:connect("object-removed", function (parent, id)
local device = parent:get_managed_object(id)
+ if not device then
+ return
+ end
+
if rd_plugin then
local rd_name = device.properties["api.dbus.ReserveDevice1"]
if rd_name then
--
GitLab