SHA256
1
0
forked from pool/wireplumber

Accepting request 933504 from home:alarrosa:branches:multimedia:libs

- Add patches from upstream to fix wireplumber breaking when
  udevadm trigger is run:
  * 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
- And another patch to fix an issue where there is only 1 sink
  available and the card profile is toggeled between pro and
  stereo:
  * 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch

OBS-URL: https://build.opensuse.org/request/show/933504
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=9
This commit is contained in:
Antonio Larrosa 2021-11-24 16:19:21 +00:00 committed by Git OBS Bridge
parent fadeb6f81e
commit 16613e5370
4 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,46 @@
From f4546a18e871537be698916178b40091a4a0b377 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] 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 d8e4e092..68df6ee8 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);
}
--
GitLab

View File

@ -0,0 +1,34 @@
From 83041b0ce277c95afaf1824f525ea0bec516f03f Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 18 Nov 2021 15:23:23 +0100
Subject: [PATCH] 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 5029d1b3..445b1a7b 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"]
--
GitLab

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Wed Nov 24 16:09:52 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Add patches from upstream to fix wireplumber breaking when
udevadm trigger is run:
* 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
- And another patch to fix an issue where there is only 1 sink
available and the card profile is toggeled between pro and
stereo:
* 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch
-------------------------------------------------------------------
Thu Nov 11 13:25:33 UTC 2021 - alarrosa@suse.com

View File

@ -28,6 +28,8 @@ License: MIT
Group: Development/Libraries/C and C++
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
Source0: wireplumber-%{version}.tar.xz
Patch0: 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
Patch1: 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch
Patch100: reduce-meson-required-version.patch
BuildRequires: cmake
BuildRequires: doxygen
@ -127,6 +129,8 @@ the wireplumber shared library.
%prep
%setup -n wireplumber-%{version}
%patch0 -p1
%patch1 -p1
%if %{pkg_vcmp meson < 0.56.0}
%patch100 -p1
%endif