SHA256
1
0
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:
Antonio Larrosa 2021-11-11 14:00:57 +00:00 committed by Git OBS Bridge
parent f5cfdfb8e7
commit fadeb6f81e
11 changed files with 57 additions and 200 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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()

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cd24b96fc9e4f4775dd501bff07b79636f54030e40c717edce35bbf586b7b7ad
size 1755660

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:382bc959e713c2d06a53c1b4aa9d3f1fe4f543283f3efca0c90bd0c01256f0e5
size 1745932

View File

@ -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>

View File

@ -1,5 +1,5 @@
name: wireplumber
version: 0.4.4
mtime: 1634306082
commit: 9e11aa5b8b07d4b98da9890898e3f5b697c5fe97
version: 0.4.5
mtime: 1636626925
commit: 3946457a7942a179c0f61c60de8cb8fc643391dd

View File

@ -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