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="scm">git</param>
|
||||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
||||||
<param name="changesgenerate">enable</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="versionformat">@PARENT_TAG@</param>
|
||||||
<!--
|
<!--
|
||||||
<param name="versionprefix">0.4.1+git</param>
|
<param name="versionprefix">0.4.1+git</param>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<servicedata>
|
<servicedata>
|
||||||
<service name="tar_scm">
|
<service name="tar_scm">
|
||||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
<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
|
Index: wireplumber/meson.build
|
||||||
===================================================================
|
===================================================================
|
||||||
--- wireplumber.orig/meson.build
|
--- wireplumber.orig/meson.build
|
||||||
+++ wireplumber/meson.build
|
+++ wireplumber/meson.build
|
||||||
@@ -1,7 +1,7 @@
|
@@ -1,3 +1,3 @@
|
||||||
project('wireplumber', ['c'],
|
|
||||||
version : '0.4.4',
|
|
||||||
license : 'MIT',
|
license : 'MIT',
|
||||||
- meson_version : '>= 0.56.0',
|
- meson_version : '>= 0.56.0',
|
||||||
+ meson_version : '>= 0.54.0',
|
+ meson_version : '>= 0.54.0',
|
||||||
default_options : [
|
default_options : [
|
||||||
'warning_level=1',
|
|
||||||
'buildtype=debugoptimized',
|
|
||||||
@@ -123,8 +123,8 @@ endif
|
@@ -123,8 +123,8 @@ endif
|
||||||
|
|
||||||
conf_uninstalled = configuration_data()
|
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>
|
Wed Nov 3 08:34:01 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name: wireplumber
|
name: wireplumber
|
||||||
version: 0.4.4
|
version: 0.4.5
|
||||||
mtime: 1634306082
|
mtime: 1636626925
|
||||||
commit: 9e11aa5b8b07d4b98da9890898e3f5b697c5fe97
|
commit: 3946457a7942a179c0f61c60de8cb8fc643391dd
|
||||||
|
|
||||||
|
@ -21,17 +21,14 @@
|
|||||||
%define sover 0
|
%define sover 0
|
||||||
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
|
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
|
||||||
Name: wireplumber
|
Name: wireplumber
|
||||||
Version: 0.4.4
|
Version: 0.4.5
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Session / policy manager implementation for PipeWire
|
Summary: Session / policy manager implementation for PipeWire
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: Development/Libraries/C and C++
|
Group: Development/Libraries/C and C++
|
||||||
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
|
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
|
||||||
Source0: wireplumber-%{version}.tar.xz
|
Source0: wireplumber-%{version}.tar.xz
|
||||||
Patch0: 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch
|
Patch100: reduce-meson-required-version.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
|
|
||||||
BuildRequires: cmake
|
BuildRequires: cmake
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -130,11 +127,8 @@ the wireplumber shared library.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -n wireplumber-%{version}
|
%setup -n wireplumber-%{version}
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%if %{pkg_vcmp meson < 0.56.0}
|
%if %{pkg_vcmp meson < 0.56.0}
|
||||||
%patch3 -p1
|
%patch100 -p1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
Loading…
Reference in New Issue
Block a user