wireplumber 0.4.6

This commit is contained in:
Wim Taymans 2022-01-07 09:40:19 +01:00
parent b45f1cd227
commit 6bfab6d0d2
5 changed files with 6 additions and 127 deletions

View File

@ -1,40 +0,0 @@
From 756c5222d698f143142b69318d5af22a377df0a0 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Mon, 15 Nov 2021 11:51:11 +0100
Subject: [PATCH 1/3] policy-node: Remove direction check
Remove the direction check in findDefinedTarget. We already to a
better direction check in canLink().
This fixes the case where a capture stream has the node.target set
to a sink. The directions don't match and the capture stream is not
linked to the monitor ports of the sink. Removing the check triggers
the right logic in canLink() and obs studio can link to monitor
ports again.
---
src/scripts/policy-node.lua | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
index b2e1e14..5029d1b 100644
--- a/src/scripts/policy-node.lua
+++ b/src/scripts/policy-node.lua
@@ -237,7 +237,6 @@ function findDefinedTarget (properties)
local target_id = metadata
and metadata:find(properties["node.id"], "target.node")
or properties["node.target"]
- local target_direction = getTargetDirection(properties)
if target_id and tonumber(target_id) then
local si_target = linkables_om:lookup {
@@ -253,7 +252,6 @@ function findDefinedTarget (properties)
local target_props = si_target.properties
if (target_props["node.name"] == target_id or
target_props["object.path"] == target_id) and
- target_props["item.node.direction"] == target_direction and
canLink (properties, si_target) then
return si_target
end
--
2.31.1

View File

@ -1,47 +0,0 @@
From 3795906f33dbd4af4c2d2603788a18cf9a24cbe1 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 12 Nov 2021 11:19:54 +1000
Subject: [PATCH 2/3] m-reserve-device: replace the hash table key on new
insert
We're using the WpReserveDevice's name as key in the hash table, so we
must update the key as well when we replace an item in the hashtable -
the old device (and its name) will be released.
The side-effect of this is that the *third* device with an identical
name will no longer replace the previous device. This results in the
following sequence:
- dev1 added: name Audio0
- dev1 requests name owner Audio0
- dev2 added: name Audio0
- replace dev1 in the hashtable
- dev1 emits "release" signal
- dev1 unowns the Audio0 name
- dev2 requests name owner Audio0
- dev3 added: name Audio0
- adds to the hashtable because the existing key is now undefined
- dev3 requests name owner Audio0
- error, you cannot request ownership for the same name twice
Fixes #93
---
modules/module-reserve-device/plugin.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/module-reserve-device/plugin.c b/modules/module-reserve-device/plugin.c
index d8e4e09..68df6ee 100644
--- a/modules/module-reserve-device/plugin.c
+++ b/modules/module-reserve-device/plugin.c
@@ -221,7 +221,7 @@ wp_reserve_device_plugin_create_reservation (WpReserveDevicePlugin *self,
NULL);
/* use rd->name to avoid copying @em name again */
- g_hash_table_insert (self->reserve_devices, rd->name, rd);
+ g_hash_table_replace (self->reserve_devices, rd->name, rd);
return g_object_ref (rd);
}
--
2.31.1

View File

@ -1,34 +0,0 @@
From 7b56ba347d44507ff510e88b6e0a984c37524de6 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 18 Nov 2021 15:23:23 +0100
Subject: [PATCH 3/3] policy-node: wait for nodes when we become unlinked
If we were linked before but our node is removed, wait until a new node
becomes available instead of failing.
This fixes an issue where there is only 1 sink available and the card
profile is toggeled between pro and stereo. After the profile is
toggled, the sink is removed and the node would be killed with an error
because there is no fallback sink. The fix is similar to the
pipewire-media-session logic.
---
src/scripts/policy-node.lua | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
index 5029d1b..445b1a7 100644
--- a/src/scripts/policy-node.lua
+++ b/src/scripts/policy-node.lua
@@ -493,6 +493,9 @@ function handleLinkable (si)
if not reconnect then
Log.info (si, "... destroy node")
node:request_destroy()
+ elseif si_flags[si.id].was_handled then
+ Log.info (si, "... waiting reconnect")
+ return
end
local client_id = node.properties["client.id"]
--
2.31.1

View File

@ -1 +1 @@
SHA512 (wireplumber-0.4.5.tar.bz2) = edff16bf257f1898c58b6375de6f72ae1583dcd35dfb5b3f62cc10b43a038611aeecee8e145ea8c7ed964e9242979974dcd52bfb38125e04d058c76fedc42063
SHA512 (wireplumber-0.4.6.tar.bz2) = ae7df1e2aaeff77584ecfbf60f0ae59068bd38f6d075c6db5e6b4ed3722d78ba1ce48e6f61c297952512c33e1cecff60dd9a6a9858bde1da7123b24a3afa4682

View File

@ -1,6 +1,6 @@
Name: wireplumber
Version: 0.4.5
Release: 3%{?dist}
Version: 0.4.6
Release: 1%{?dist}
Summary: A modular session/policy manager for PipeWire
License: MIT
@ -8,9 +8,6 @@ URL: https://pipewire.pages.freedesktop.org/wireplumber/
Source0: https://gitlab.freedesktop.org/pipewire/%{name}/-/archive/%{version}/%{name}-%{version}.tar.bz2
## upstream patches
Patch0001: 0001-policy-node-Remove-direction-check.patch
Patch0002: 0002-m-reserve-device-replace-the-hash-table-key-on-new-i.patch
Patch0003: 0003-policy-node-wait-for-nodes-when-we-become-unlinked.patch
## upstreamable patches
@ -118,6 +115,9 @@ fi
%{_datadir}/gir-1.0/Wp-0.4.gir
%changelog
* Fri Jan 07 2022 Wim Taymans <wim.taymans@redhat.com> - 0.4.6-1
- wireplumber 0.4.6
* Fri Nov 19 2021 Wim Taymans <wim.taymans@redhat.com> - 0.4.5-3
- Add some upstream patches for OBS audio output capture and
device switching.