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
This commit is contained in:
Antonio Larrosa 2022-11-15 08:32:16 +00:00 committed by Git OBS Bridge
parent 1c0d79e47a
commit d503c29728
4 changed files with 123 additions and 0 deletions

View File

@ -0,0 +1,60 @@
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

View File

@ -0,0 +1,46 @@
From f79a330849ebf320c42d03c123f48fec6b9ad3a8 Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pav@iki.fi>
Date: Thu, 3 Nov 2022 19:22:20 +0200
Subject: [PATCH] scripts: policy-node: wait for unactivated links instead of
removing
If a link is not activated, don't remove it. Instead, schedule a rescan
when a link activates, so that we'll handle it once it does.
This is a workaround for some problems, see
https://github.com/Audio4Linux/JDSP4Linux/issues/74
However, the underlying cause is not understood.
---
src/scripts/policy-node.lua | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
index 43df701c..a25d0a5e 100644
--- a/src/scripts/policy-node.lua
+++ b/src/scripts/policy-node.lua
@@ -123,6 +123,7 @@ function createLink (si, si_target, passthrough, exclusive)
end
Log.info (l, "activated si-standard-link")
end
+ scheduleRescan()
end)
end
@@ -696,9 +697,11 @@ function handleLinkable (si)
if link ~= nil then
-- remove old link
if ((link:get_active_features() & Feature.SessionItem.ACTIVE) == 0) then
- -- remove also not yet activated links: they might never become active,
- -- and we should not loop waiting for them
- Log.warning (link, "Link was not activated before removing")
+ -- Link not yet activated. We don't want to remove it now, as that
+ -- may cause problems. Instead, give up for now. A rescan is scheduled
+ -- once the link activates.
+ Log.info (link, "Link to be moved was not activated, will wait for it.")
+ return
end
si_flags[si_id].peer_id = nil
link:remove ()
--
GitLab

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Tue Nov 15 08:21:15 UTC 2022 - Antonio Larrosa <alarrosa@suse.com>
- 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
-------------------------------------------------------------------
Tue Oct 4 13:01:17 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>

View File

@ -32,6 +32,10 @@ Source0: wireplumber-%{version}.tar.xz
Source1: split-config-file.py
# PATCH-FIX-OPENSUSE reduce-meson-required-version.patch
Patch0: reduce-meson-required-version.patch
# PATCH-FIX-UPSTREAM
Patch1: 0001-alsa.lua-remove-the-disabled-entities-from-the-names-table.patch
# PATCH-FIX-UPSTREAM
Patch2: 0001-policy-node-wait-for-unactivated-links-instead-of-removing.patch
# docs
BuildRequires: doxygen
BuildRequires: graphviz
@ -140,6 +144,8 @@ the wireplumber shared library.
%if 0%{?sle_version} <= 150300
%patch0 -p1
%endif
%patch1 -p1
%patch2 -p1
pushd src/config/main.lua.d
python3 %{SOURCE1}