SHA256
1
0
forked from pool/wireplumber

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

- Add patch from upstream to fix a crash when there's a link error
  (glfo#pipewire/wireplumber#76):
  * 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch

- Update to version 0.4.4:
  * Highlights:
    - Implemented linking nodes in passthrough mode, which enables
      encoded iec958 / dsd audio passthrough
    - Streams are now sent an error if it was not possible to link
      them to a target (#63)
    - When linking nodes where at least one of them has an
      unpositioned channel layout, the other one is not
      reconfigured to match the channel layout; it is instead
      linked with a best effort port matching logic
    - Output route switches automatically to the latest one that
      has become available (#69)
    - Policy now respects the 'node.exclusive' and 'node.passive'
      properties
    - Many other minor policy fixes for a smoother desktop usage
      experience
  * API:
    - Fixed an issue with the LocalModule() constructor not
      accepting nil as well as the properties table properly
    - Added WpClient.send_error(), WpSpaPod.fixate() and
    - WpSpaPod.filter() (both in C and Lua)
  * Misc:
    - Bumped meson version requirement to 0.56 to be able to use
      meson.project_{source,build}_root() and ease integration with
      pipewire's build system as a subproject
    - wireplumber.service is now an alias to

OBS-URL: https://build.opensuse.org/request/show/926162
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=5
This commit is contained in:
Antonio Larrosa 2021-10-19 08:38:02 +00:00 committed by Git OBS Bridge
parent dfbdbf6646
commit ee9013bfde
8 changed files with 215 additions and 18 deletions

View File

@ -0,0 +1,36 @@
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

@ -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.1</param>
<param name="revision">0.4.4</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">b741b2c8c876585eabd6f4d62d62af5b46c0afd0</param></service></servicedata>
<param name="changesrevision">9e11aa5b8b07d4b98da9890898e3f5b697c5fe97</param></service></servicedata>

View File

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

View File

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

View File

@ -1,3 +1,157 @@
-------------------------------------------------------------------
Tue Oct 19 07:25:22 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to fix a crash when there's a link error
(glfo#pipewire/wireplumber#76):
* 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch
-------------------------------------------------------------------
Fri Oct 15 15:55:46 UTC 2021 - alarrosa@suse.com
- Update to version 0.4.4:
* Highlights:
- Implemented linking nodes in passthrough mode, which enables
encoded iec958 / dsd audio passthrough
- Streams are now sent an error if it was not possible to link
them to a target (#63)
- When linking nodes where at least one of them has an
unpositioned channel layout, the other one is not
reconfigured to match the channel layout; it is instead
linked with a best effort port matching logic
- Output route switches automatically to the latest one that
has become available (#69)
- Policy now respects the 'node.exclusive' and 'node.passive'
properties
- Many other minor policy fixes for a smoother desktop usage
experience
* API:
- Fixed an issue with the LocalModule() constructor not
accepting nil as well as the properties table properly
- Added WpClient.send_error(), WpSpaPod.fixate() and
- WpSpaPod.filter() (both in C and Lua)
* Misc:
- Bumped meson version requirement to 0.56 to be able to use
meson.project_{source,build}_root() and ease integration with
pipewire's build system as a subproject
- wireplumber.service is now an alias to
pipewire-session-manager.service
- Loading the logind module no longer fails if it was not found
on the system; there is only a message printed in the output
- The logind module can now be compiled with elogind (#71)
- Improvements in wp-uninstalled.sh, mostly to ease its
integration with pipewire's build system when wireplumber is
build as a subproject
- The format of audio nodes is now selected using the same
algorithm as in media-session
- Fixed a nasty segfault that appeared in 0.4.3 due to a typo
(#72)
- Fixed a re-entrancy issue in the wplua runtime (#73)
- Update to version 0.4.3:
* Fixes:
- Implemented logind integration to start the bluez monitor
only on the WirePlumber instance that is running on the
active seat; this fixes a bunch of startup warnings and the
disappearance of HSP/HFP nodes after login (#54)
- WirePlumber is now launched with GIO_USE_VFS=local to avoid
strange D-Bus interference when the user session is
restarted, which previously resulted in WirePlumber being
terminated with SIGTERM and never recovering (#48)
- WirePlumber now survives a restart of the D-Bus service,
reconnecting to the bus and reclaiming the bus services that
it needs (#55)
- Implemented route-settings metadata, which fixes storing
volume for the "System Sounds" in GNOME (#51)
- Monitor sources can now be selected as the default source
(#60)
- Refactored some policy logic to allow linking to monitors;
the policy now also respects "stream.capture.sink" property
of streams which declares that the stream wants to be linked
to a monitor (#66)
- Policy now cleans up 'target.node' metadata so that streams
get to follow the default source/sink again after the default
was changed to match the stream's currently configured target
(#65)
- Fixed configuring virtual sources (#57)
- Device monitors now do not crash if a SPA plugin is missing;
instead, they print a warning to help users identify what
they need to install (!214)
- Fixed certain "proxy activation failed" warnings (#44)
- iec958 codec configuration is now saved and restored properly
(!228)
- Fixed some logging issues with the latest version of pipewire
(!227, !232)
- Policy now respects the "node.link-group" property, which
fixes issues with filter-chain and other virtual sources &
sinks (#47)
- Access policy now grants full permissions to flatpak
"Manager" apps (#59)
* Policy:
- Added support for 'no-dsp' mode, which allows streaming audio
using the format of the device instead of the standard float
32-bit planar format (!225)
* Library:
- WpImplMetadata is now implemented using pw_impl_metadata
instead of using its own implementation (#52)
- Added support for custom object property IDs in WpSpaPod
(#53)
* Misc:
- Added a script to load the libcamera monitor (!231)
- Added option to disable building unit tests (!209)
- WirePlumber will now fail to start with a warning if
pipewire-media-session is also running in the system (#56)
- The bluez monitor configuration was updated to match the
latest one in pipewire-media-session (!224)
- Update to version 0.4.2:
* Highlights:
- Requires PipeWire 0.3.32 or later at runtime
- Configuration files are now installed in
$PREFIX/share/wireplumber, along with scripts, following the
paradigm of PipeWire
- State files are now stored in $XDG_STATE_HOME instead of
$XDG_CONFIG_HOME
- Added new file-monitor-api module, which allows Lua scripts
to watch the filesystem for changes, using inotify
- Added monitor for MIDI devices
- Added a system-lua-version meson option that allows
distributors to choose which Lua version to build against
(auto, 5.3 or 5.4)
- wpipc has been removed and split out to a separate project,
https://git.automotivelinux.org/src/pipewire-ic-ipc/
* Library:
- A new WpImplModule class has been added; this allows loading
a PipeWire module in the WirePlumber process space, keeping a
handle that can be used to unload that module later. This is
useful for loading filters, network sources/sinks, etc...
- State files can now store keys that contain certain
GKeyFile-reserved characters, such as [, ], = and space; this
fixes storing stream volume state for streams using
PipeWire's ALSA compatibility PCM plugin
- WpProperties now uses a boxed WpPropertiesItem type in its
iterators so that these iterators can be used with g-i
bindings
- Added API to lookup configuration and script files from
multiple places in the filesystem
* Lua:
- A LocalModule API has been added to reflect the functionality
offered by WpImplModule in C
- The Node API now has a complete set of methods to reflect the
methods of WpNode
- Added Port.get_direction()
- Added not-equals to the possible constraint verbs
- Debug.dump_table now sorts keys before printing the table
* Misc:
- Tests no longer accidentally create files in $HOME; all
transient files that are used for testing are now created
in the build directory, except for sockets which are created
in /tmp due to the 108-character limitation in socket paths
- Tests that require optional SPA plugins are now skipped if
those SPA plugins are not installed
- Added a nice summary output at the end of meson configuration
- Documented the Lua ObjectManager / Interest / Constraint APIs
- Fixed some memory leaks
-------------------------------------------------------------------
Wed Jul 14 14:57:37 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,5 +1,5 @@
name: wireplumber
version: 0.4.1
mtime: 1624962439
commit: b741b2c8c876585eabd6f4d62d62af5b46c0afd0
version: 0.4.4
mtime: 1634306082
commit: 9e11aa5b8b07d4b98da9890898e3f5b697c5fe97

View File

@ -21,21 +21,22 @@
%define sover 0
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
Name: wireplumber
Version: 0.4.1
Version: 0.4.4
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: %{name}-%{version}.tar.xz
Source0: wireplumber-%{version}.tar.xz
Patch0: 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch
BuildRequires: cmake
BuildRequires: cpptoml-devel
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: graphviz
BuildRequires: meson >= 0.54.0
BuildRequires: pipewire >= 0.3.20
BuildRequires: pipewire-devel >= 0.3.20
BuildRequires: meson >= 0.56.0
BuildRequires: pipewire >= 0.3.32
#!BuildIgnore: pipewire-session-manager
BuildRequires: pipewire-spa-plugins-0_2
BuildRequires: pkgconfig
BuildRequires: xmltoman
@ -58,7 +59,7 @@ BuildRequires: pkgconfig(jack) >= 1.9.10
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavfilter)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libpipewire-0.3)
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.32
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev)
@ -71,7 +72,7 @@ BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(x11)
BuildRequires: python3-base
BuildRequires: python3-lxml
Requires: pipewire >= 0.3.20
Requires: pipewire >= 0.3.32
%if 0%{?suse_version} <= 1500
BuildRequires: gcc9
BuildRequires: gcc9-c++
@ -90,6 +91,7 @@ external tools for managing PipeWire.
Summary: Session / policy manager implementation for PipeWire
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires: %{libwireplumber} = %{version}
%description devel
WirePlumber is a modular session / policy manager for PipeWire and
@ -125,13 +127,16 @@ This package provides the GObject Introspection bindings for
the wireplumber shared library.
%prep
%autosetup
%setup -n wireplumber-%{version}
%patch0 -p1
%build
%if %{pkg_vcmp gcc < 8}
export CC=gcc-9
%endif
%meson -Ddoc=disabled -Dsystem-lua=true
%meson -Ddoc=disabled \
-Dsystem-lua=true \
-Delogind=disabled
%meson_build
%install
@ -151,17 +156,19 @@ export XDG_RUNTIME_DIR=/tmp
%{_bindir}/wireplumber
%{_bindir}/wpctl
%{_bindir}/wpexec
%config %{_sysconfdir}/wireplumber/
%dir %{_libdir}/wireplumber-%{apiver}
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-profile.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-device-activation.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-file-monitor-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-logind.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-lua-scripting.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-metadata.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-mixer-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-portal-permissionstore.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-reserve-device.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-route-settings-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-adapter.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-endpoint.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-node.so