forked from pool/wireplumber
Accepting request 930868 from home:alarrosa:branches:multimedia:libs
- Update to version 0.4.5: * Fixes: - Fixed a crash that could happen after a node linking error (glfo#pipewire/wireplumber#76) - Fixed a bug that would cause capture streams to link to monitor ports of loopback nodes instead of linking to their capture ports - Fixed a needless wait that would happen on applications using the pipewire ALSA plugin (glfo#pipewire/wireplumber#92) - Fixed an issue that would cause endless rescan loops in policy-node and could potentially also cause other strange behaviors in case pavucontrol or another monitoring utility was open while the policy was rescanning (glfo#pipewire/wireplumber#77) - Fixed the endpoints-based policy that broke in recent versions and improved its codebase to share more code and be more in-line with policy-node - The semicolon character is now escaped properly in state files (glfo#pipewire/wireplumber#82) - When a player requests encoded audio passthrough, the policy now prefers linking to a device that supports that instead of trying to link to the default device and potentially failing (glfo#pipewire/wireplumber#75) - Miscellaneous robustness fixes in policy-node * API: - Added WpFactory, a binding for pw_factory proxies. This allows object managers to query factories that are loaded in the pipewire daemon - The file-monitor-api plugin can now watch files for changes in addition to directories OBS-URL: https://build.opensuse.org/request/show/930868 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=8
This commit is contained in:
parent
f5cfdfb8e7
commit
fadeb6f81e
@ -1,26 +0,0 @@
|
||||
From ff9b49064df436b0523bda66e567eb60ecf07f70 Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Mon, 1 Nov 2021 12:14:04 +0200
|
||||
Subject: [PATCH] default-routes.lua: add missing break in best route selection
|
||||
logic
|
||||
|
||||
Fixes #86
|
||||
---
|
||||
src/scripts/default-routes.lua | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/scripts/default-routes.lua b/src/scripts/default-routes.lua
|
||||
index 9c5593a4..b55ae4e0 100644
|
||||
--- a/src/scripts/default-routes.lua
|
||||
+++ b/src/scripts/default-routes.lua
|
||||
@@ -266,6 +266,7 @@ function findBestRoute(dev_info, device_id)
|
||||
if ri.direction == "Output" and ri.available ~= ri.prev_available then
|
||||
best_avail = ri
|
||||
ri.save = true
|
||||
+ break
|
||||
elseif ri.available == "yes" then
|
||||
if (best_avail == nil or ri.priority > best_avail.priority) then
|
||||
best_avail = ri
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,36 +0,0 @@
|
||||
From 6e67000d5e42fc30e6f7ff3ec5544e0be8dcbf00 Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Sat, 16 Oct 2021 09:51:00 +0300
|
||||
Subject: [PATCH] si-standard-link: fix crash after returning a link error
|
||||
|
||||
If one link fails, the activation transition will return, but then
|
||||
other links will continue to call the callback and try to access
|
||||
the now invalid activation transition. With this change, the callback
|
||||
is bound to the lifetime of the transition and will stop being called
|
||||
after the transition returns
|
||||
|
||||
Fixes #76
|
||||
---
|
||||
modules/module-si-standard-link.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c
|
||||
index 5dda0581..95ec7ca5 100644
|
||||
--- a/modules/module-si-standard-link.c
|
||||
+++ b/modules/module-si-standard-link.c
|
||||
@@ -310,9 +310,10 @@ create_links (WpSiStandardLink * self, WpTransition * transition,
|
||||
|
||||
/* activate to ensure it is created without errors */
|
||||
self->n_async_ops_wait++;
|
||||
- wp_object_activate (WP_OBJECT (link),
|
||||
+ wp_object_activate_closure (WP_OBJECT (link),
|
||||
WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL, NULL,
|
||||
- (GAsyncReadyCallback) on_link_activated, transition);
|
||||
+ g_cclosure_new_object (
|
||||
+ (GCallback) on_link_activated, G_OBJECT (transition)));
|
||||
}
|
||||
g_variant_iter_free (iter);
|
||||
return self->node_links->len > 0;
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,116 +0,0 @@
|
||||
From f8ced47a1a9595b32c59ece24b864bafbdcc74fe Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Tue, 19 Oct 2021 13:04:58 +0300
|
||||
Subject: [PATCH] policy-node: enforce the direction of the target when linking
|
||||
by node name
|
||||
|
||||
When node.target is set to contain a node's name, it is possible to run
|
||||
into the situation where you have a sink and a source with the same name
|
||||
(typically the case with module-loopback) and the sink has monitor ports,
|
||||
so wireplumber may link the stream to the monitor of the sink instead of the
|
||||
capture ports of the source
|
||||
|
||||
With this policy, if a stream really wants to link to the monitor of the sink,
|
||||
it has to have the "stream.capture.sink" property set or specify the
|
||||
target by id.
|
||||
---
|
||||
src/scripts/policy-node.lua | 76 +++++++++++++++++--------------------
|
||||
1 file changed, 35 insertions(+), 41 deletions(-)
|
||||
|
||||
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
|
||||
index 4c5c359b..e982a09d 100644
|
||||
--- a/src/scripts/policy-node.lua
|
||||
+++ b/src/scripts/policy-node.lua
|
||||
@@ -187,47 +187,6 @@ function canLink (properties, si_target)
|
||||
return true
|
||||
end
|
||||
|
||||
--- Try to locate a valid target node that was explicitly defined by the user
|
||||
--- Use the target.node metadata, if config.move is enabled,
|
||||
--- then use the node.target property that was set on the node
|
||||
--- `properties` must be the properties dictionary of the session item
|
||||
--- that is currently being handled
|
||||
-function findDefinedTarget (properties)
|
||||
- local function findTargetByTargetNodeMetadata (properties)
|
||||
- local node_id = properties["node.id"]
|
||||
- local metadata = metadata_om:lookup()
|
||||
- local target_id = metadata and metadata:find(node_id, "target.node") or nil
|
||||
- if target_id and tonumber(target_id) > 0 then
|
||||
- local si_target = linkables_om:lookup {
|
||||
- Constraint { "node.id", "=", target_id },
|
||||
- }
|
||||
- if si_target and canLink (properties, si_target) then
|
||||
- return si_target
|
||||
- end
|
||||
- end
|
||||
- return nil
|
||||
- end
|
||||
-
|
||||
- local function findTargetByNodeTargetProperty (properties)
|
||||
- local target_id = properties["node.target"]
|
||||
- if target_id then
|
||||
- for si_target in linkables_om:iterate() do
|
||||
- local target_props = si_target.properties
|
||||
- if (target_props["node.id"] == target_id or
|
||||
- target_props["node.name"] == target_id or
|
||||
- target_props["object.path"] == target_id) and
|
||||
- canLink (properties, si_target) then
|
||||
- return si_target
|
||||
- end
|
||||
- end
|
||||
- end
|
||||
- return nil
|
||||
- end
|
||||
-
|
||||
- return (config.move and findTargetByTargetNodeMetadata (properties) or nil)
|
||||
- or findTargetByNodeTargetProperty (properties)
|
||||
-end
|
||||
-
|
||||
function getTargetDirection(properties)
|
||||
local target_direction = nil
|
||||
if properties["item.node.direction"] == "output" or
|
||||
@@ -247,6 +206,41 @@ function getDefaultNode(properties, target_direction)
|
||||
return default_nodes:call("get-default-node", target_media_class)
|
||||
end
|
||||
|
||||
+-- Try to locate a valid target node that was explicitly defined by the user
|
||||
+-- Use the target.node metadata, if config.move is enabled,
|
||||
+-- then use the node.target property that was set on the node
|
||||
+-- `properties` must be the properties dictionary of the session item
|
||||
+-- that is currently being handled
|
||||
+function findDefinedTarget (properties)
|
||||
+ local metadata = config.move and metadata_om:lookup()
|
||||
+ 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 {
|
||||
+ Constraint { "node.id", "=", target_id },
|
||||
+ }
|
||||
+ if si_target and canLink (properties, si_target) then
|
||||
+ return si_target
|
||||
+ end
|
||||
+ end
|
||||
+
|
||||
+ if target_id then
|
||||
+ for si_target in linkables_om:iterate() do
|
||||
+ 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
|
||||
+ end
|
||||
+ end
|
||||
+ return nil
|
||||
+end
|
||||
+
|
||||
-- Try to locate a valid target node that was NOT explicitly defined by the user
|
||||
-- `properties` must be the properties dictionary of the session item
|
||||
-- that is currently being handled
|
||||
--
|
||||
GitLab
|
||||
|
2
_service
2
_service
@ -4,7 +4,7 @@
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="revision">0.4.4</param>
|
||||
<param name="revision">0.4.5</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<!--
|
||||
<param name="versionprefix">0.4.1+git</param>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
||||
<param name="changesrevision">9e11aa5b8b07d4b98da9890898e3f5b697c5fe97</param></service></servicedata>
|
||||
<param name="changesrevision">3946457a7942a179c0f61c60de8cb8fc643391dd</param></service></servicedata>
|
@ -1,16 +1,18 @@
|
||||
From: Antonio Larrosa <alarrosa@suse.com>
|
||||
Subject: Reduce the minimum required meson version
|
||||
|
||||
With this, we can build wireplumber in SLE 15 SP3/Leap 15.3
|
||||
which only have meson 0.54
|
||||
|
||||
Index: wireplumber/meson.build
|
||||
===================================================================
|
||||
--- wireplumber.orig/meson.build
|
||||
+++ wireplumber/meson.build
|
||||
@@ -1,7 +1,7 @@
|
||||
project('wireplumber', ['c'],
|
||||
version : '0.4.4',
|
||||
@@ -1,3 +1,3 @@
|
||||
license : 'MIT',
|
||||
- meson_version : '>= 0.56.0',
|
||||
+ meson_version : '>= 0.54.0',
|
||||
default_options : [
|
||||
'warning_level=1',
|
||||
'buildtype=debugoptimized',
|
||||
@@ -123,8 +123,8 @@ endif
|
||||
|
||||
conf_uninstalled = configuration_data()
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cd24b96fc9e4f4775dd501bff07b79636f54030e40c717edce35bbf586b7b7ad
|
||||
size 1755660
|
3
wireplumber-0.4.5.obscpio
Normal file
3
wireplumber-0.4.5.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:382bc959e713c2d06a53c1b4aa9d3f1fe4f543283f3efca0c90bd0c01256f0e5
|
||||
size 1745932
|
@ -1,3 +1,42 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 11 13:25:33 UTC 2021 - alarrosa@suse.com
|
||||
|
||||
- Update to version 0.4.5:
|
||||
* Fixes:
|
||||
- Fixed a crash that could happen after a node linking error
|
||||
(glfo#pipewire/wireplumber#76)
|
||||
- Fixed a bug that would cause capture streams to link to
|
||||
monitor ports of loopback nodes instead of linking to their
|
||||
capture ports
|
||||
- Fixed a needless wait that would happen on applications using
|
||||
the pipewire ALSA plugin (glfo#pipewire/wireplumber#92)
|
||||
- Fixed an issue that would cause endless rescan loops in
|
||||
policy-node and could potentially also cause other strange
|
||||
behaviors in case pavucontrol or another monitoring utility
|
||||
was open while the policy was rescanning
|
||||
(glfo#pipewire/wireplumber#77)
|
||||
- Fixed the endpoints-based policy that broke in recent
|
||||
versions and improved its codebase to share more code and be
|
||||
more in-line with policy-node
|
||||
- The semicolon character is now escaped properly in state
|
||||
files (glfo#pipewire/wireplumber#82)
|
||||
- When a player requests encoded audio passthrough, the policy
|
||||
now prefers linking to a device that supports that instead of
|
||||
trying to link to the default device and potentially failing
|
||||
(glfo#pipewire/wireplumber#75)
|
||||
- Miscellaneous robustness fixes in policy-node
|
||||
* API:
|
||||
- Added WpFactory, a binding for pw_factory proxies. This
|
||||
allows object managers to query factories that are loaded in
|
||||
the pipewire daemon
|
||||
- The file-monitor-api plugin can now watch files for changes
|
||||
in addition to directories
|
||||
|
||||
- Remove patches already included by upstream:
|
||||
* 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch
|
||||
* 0002-policy-node-enforce-the-direction-of-the-target-when-linking-by-node-name.patch
|
||||
* 0001-add-missing-break-in-best-route-selection-logic.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 3 08:34:01 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: wireplumber
|
||||
version: 0.4.4
|
||||
mtime: 1634306082
|
||||
commit: 9e11aa5b8b07d4b98da9890898e3f5b697c5fe97
|
||||
version: 0.4.5
|
||||
mtime: 1636626925
|
||||
commit: 3946457a7942a179c0f61c60de8cb8fc643391dd
|
||||
|
||||
|
@ -21,17 +21,14 @@
|
||||
%define sover 0
|
||||
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
|
||||
Name: wireplumber
|
||||
Version: 0.4.4
|
||||
Version: 0.4.5
|
||||
Release: 0
|
||||
Summary: Session / policy manager implementation for PipeWire
|
||||
License: MIT
|
||||
Group: Development/Libraries/C and C++
|
||||
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
|
||||
Source0: wireplumber-%{version}.tar.xz
|
||||
Patch0: 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch
|
||||
Patch1: 0002-policy-node-enforce-the-direction-of-the-target-when-linking-by-node-name.patch
|
||||
Patch2: 0001-add-missing-break-in-best-route-selection-logic.patch
|
||||
Patch3: reduce-meson-required-version.patch
|
||||
Patch100: reduce-meson-required-version.patch
|
||||
BuildRequires: cmake
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: fdupes
|
||||
@ -130,11 +127,8 @@ the wireplumber shared library.
|
||||
|
||||
%prep
|
||||
%setup -n wireplumber-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%if %{pkg_vcmp meson < 0.56.0}
|
||||
%patch3 -p1
|
||||
%patch100 -p1
|
||||
%endif
|
||||
|
||||
%build
|
||||
|
Loading…
Reference in New Issue
Block a user