Accepting request 1007919 from home:XRevan86
- Update to version 0.4.12. OBS-URL: https://build.opensuse.org/request/show/1007919 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=51
This commit is contained in:
parent
bb0b83f76e
commit
1c0d79e47a
@ -1,51 +0,0 @@
|
||||
From eb406bdb2cbbcd49c55c71285f8f2eddb624d24b Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Wed, 13 Jul 2022 13:38:14 +0300
|
||||
Subject: [PATCH] dbus: fix crash when trying to reconnect
|
||||
|
||||
When coming from on_sync_reconnect, data points to the WpDBus object
|
||||
instead of the activation transition.
|
||||
|
||||
Fixes: #305
|
||||
---
|
||||
lib/wp/dbus.c | 20 ++++++++++++++++----
|
||||
1 file changed, 16 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/wp/dbus.c b/lib/wp/dbus.c
|
||||
index 01a3b21..7c2d023 100644
|
||||
--- a/lib/wp/dbus.c
|
||||
+++ b/lib/wp/dbus.c
|
||||
@@ -58,14 +58,26 @@ wp_dbus_set_state (WpDbus *self, WpDBusState new_state)
|
||||
static void
|
||||
on_got_bus (GObject * obj, GAsyncResult * res, gpointer data)
|
||||
{
|
||||
- WpTransition *transition = WP_TRANSITION (data);
|
||||
- WpDbus *self = wp_transition_get_source_object (transition);
|
||||
+ WpTransition *transition;
|
||||
+ WpDbus *self;
|
||||
g_autoptr (GError) error = NULL;
|
||||
|
||||
+ if (WP_IS_TRANSITION (data)) {
|
||||
+ // coming from wp_dbus_enable
|
||||
+ transition = WP_TRANSITION (data);
|
||||
+ self = wp_transition_get_source_object (transition);
|
||||
+ } else {
|
||||
+ // coming from on_sync_reconnect
|
||||
+ transition = NULL;
|
||||
+ self = WP_DBUS (data);
|
||||
+ }
|
||||
+
|
||||
self->connection = g_dbus_connection_new_for_address_finish (res, &error);
|
||||
if (!self->connection) {
|
||||
- g_prefix_error (&error, "Failed to connect to bus: ");
|
||||
- wp_transition_return_error (transition, g_steal_pointer (&error));
|
||||
+ if (transition) {
|
||||
+ g_prefix_error (&error, "Failed to connect to bus: ");
|
||||
+ wp_transition_return_error (transition, g_steal_pointer (&error));
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
161
398.patch
161
398.patch
@ -1,161 +0,0 @@
|
||||
From ba10c7d8c68db7b79cfa9f0e42432b63a76c415a Mon Sep 17 00:00:00 2001
|
||||
From: Pauli Virtanen <pav@iki.fi>
|
||||
Date: Tue, 19 Jul 2022 20:39:06 +0300
|
||||
Subject: [PATCH 1/2] policy-node: fix potential rescan loop
|
||||
|
||||
SiLink activation might be delayed indefinitely under some error
|
||||
conditions. Currently, policy-node schedules a rescan when it sees a
|
||||
non-activated link on a stream to be moved, which produces busy loop if
|
||||
the si-link doesn't activate.
|
||||
|
||||
Instead of rescheduling on non-active si-links, just remove and emit a
|
||||
warning. The si-link then gets removed once it gets activated.
|
||||
|
||||
Reproducer:
|
||||
|
||||
1. Play audio from Rhythmbox and pause.
|
||||
2. Switch default output with pactl between two different outputs
|
||||
3. Links from the paused stream stay at "init"
|
||||
---
|
||||
src/scripts/policy-node.lua | 17 ++++++++---------
|
||||
1 file changed, 8 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
|
||||
index e6816723..43df701c 100644
|
||||
--- a/src/scripts/policy-node.lua
|
||||
+++ b/src/scripts/policy-node.lua
|
||||
@@ -694,16 +694,15 @@ function handleLinkable (si)
|
||||
local link = lookupLink (si_id, si_flags[si_id].peer_id)
|
||||
if reconnect then
|
||||
if link ~= nil then
|
||||
- -- remove old link if active, otherwise schedule rescan
|
||||
- if ((link:get_active_features() & Feature.SessionItem.ACTIVE) ~= 0) then
|
||||
- si_flags[si_id].peer_id = nil
|
||||
- link:remove ()
|
||||
- Log.info (si, "... moving to new target")
|
||||
- else
|
||||
- scheduleRescan()
|
||||
- Log.info (si, "... scheduled rescan")
|
||||
- return
|
||||
+ -- remove old link
|
||||
+ if ((link:get_active_features() & Feature.SessionItem.ACTIVE) == 0) then
|
||||
+ -- remove also not yet activated links: they might never become active,
|
||||
+ -- and we should not loop waiting for them
|
||||
+ Log.warning (link, "Link was not activated before removing")
|
||||
end
|
||||
+ si_flags[si_id].peer_id = nil
|
||||
+ link:remove ()
|
||||
+ Log.info (si, "... moving to new target")
|
||||
end
|
||||
else
|
||||
if link ~= nil then
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From dd017b43fa1077200ae5e00f697334908ef1b9b2 Mon Sep 17 00:00:00 2001
|
||||
From: Pauli Virtanen <pav@iki.fi>
|
||||
Date: Tue, 19 Jul 2022 20:01:10 +0300
|
||||
Subject: [PATCH 2/2] m-si-link: don't wait for establish before activation +
|
||||
cleanup links
|
||||
|
||||
SiLink should not wait for WpLinks becoming ESTABLISHED, before
|
||||
activation. That flag shows whether a link has moved away from the
|
||||
"init" state, however, links to e.g. Pulseaudio corked streams can stay
|
||||
in "init" state until uncorking. This causes trouble for policies,
|
||||
which needlessly wait for such links to establish.
|
||||
|
||||
The WpLink objects may also be kept alive by other referents, and
|
||||
just unrefing them does not necessarily destroy the PW objects.
|
||||
|
||||
Activate SiLink even if the WpLink is still in "init" state. It's enough
|
||||
that the link otherwise successfully establishes.
|
||||
|
||||
At dispose time, explicitly request destroying the WpLinks that were
|
||||
created by the SiLink, to ensure they are removed even if there's
|
||||
something else referring to them.
|
||||
---
|
||||
modules/module-si-standard-link.c | 32 ++++++++++++++++++++++++++-----
|
||||
1 file changed, 27 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c
|
||||
index dbebf391..9af71342 100644
|
||||
--- a/modules/module-si-standard-link.c
|
||||
+++ b/modules/module-si-standard-link.c
|
||||
@@ -132,6 +132,27 @@ si_standard_link_get_associated_proxy (WpSessionItem * item, GType proxy_type)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+static void
|
||||
+request_destroy_link (gpointer data, gpointer user_data)
|
||||
+{
|
||||
+ WpLink *link = WP_LINK (data);
|
||||
+
|
||||
+ wp_global_proxy_request_destroy (WP_GLOBAL_PROXY (link));
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+clear_node_links (GPtrArray **node_links_p)
|
||||
+{
|
||||
+ /*
|
||||
+ * Something else (eg. object managers) may be keeping the WpLink
|
||||
+ * objects alive. Deactive the links now, to destroy the PW objects.
|
||||
+ */
|
||||
+ if (*node_links_p)
|
||||
+ g_ptr_array_foreach (*node_links_p, request_destroy_link, NULL);
|
||||
+
|
||||
+ g_clear_pointer (node_links_p, g_ptr_array_unref);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
si_standard_link_disable_active (WpSessionItem *si)
|
||||
{
|
||||
@@ -154,7 +175,8 @@ si_standard_link_disable_active (WpSessionItem *si)
|
||||
WP_SI_LINKABLE (si_in));
|
||||
}
|
||||
|
||||
- g_clear_pointer (&self->node_links, g_ptr_array_unref);
|
||||
+ clear_node_links (&self->node_links);
|
||||
+
|
||||
self->n_active_links = 0;
|
||||
self->n_failed_links = 0;
|
||||
self->n_async_ops_wait = 0;
|
||||
@@ -168,7 +190,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res,
|
||||
WpTransition * transition)
|
||||
{
|
||||
WpSiStandardLink *self = wp_transition_get_source_object (transition);
|
||||
- guint len = self->node_links->len;
|
||||
+ guint len = self->node_links ? self->node_links->len : 0;
|
||||
|
||||
/* Count the number of failed and active links */
|
||||
if (wp_object_activate_finish (proxy, res, NULL))
|
||||
@@ -182,7 +204,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res,
|
||||
|
||||
/* We only active feature if all links activated successfully */
|
||||
if (self->n_failed_links > 0) {
|
||||
- g_clear_pointer (&self->node_links, g_ptr_array_unref);
|
||||
+ clear_node_links (&self->node_links);
|
||||
wp_transition_return_error (transition, g_error_new (
|
||||
WP_DOMAIN_LIBRARY, WP_LIBRARY_ERROR_OPERATION_FAILED,
|
||||
"%d of %d PipeWire links failed to activate",
|
||||
@@ -251,7 +273,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition,
|
||||
/* Clear old links if any */
|
||||
self->n_active_links = 0;
|
||||
self->n_failed_links = 0;
|
||||
- g_clear_pointer (&self->node_links, g_ptr_array_unref);
|
||||
+ clear_node_links (&self->node_links);
|
||||
|
||||
/* tuple format:
|
||||
uint32 node_id;
|
||||
@@ -327,7 +349,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition,
|
||||
|
||||
/* activate to ensure it is created without errors */
|
||||
wp_object_activate_closure (WP_OBJECT (link),
|
||||
- WP_OBJECT_FEATURES_ALL, NULL,
|
||||
+ WP_OBJECT_FEATURES_ALL & ~WP_LINK_FEATURE_ESTABLISHED, NULL,
|
||||
g_cclosure_new_object (
|
||||
(GCallback) on_link_activated, G_OBJECT (transition)));
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
2
_service
2
_service
@ -3,7 +3,7 @@
|
||||
<service name="obs_scm" mode="disabled">
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
||||
<param name="revision">0.4.11</param>
|
||||
<param name="revision">0.4.12</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<!--
|
||||
<param name="revision">master</param>
|
||||
|
@ -1,4 +0,0 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
|
||||
<param name="changesrevision">3400acd0db95fefdda7595d20466c095902d8997</param></service></servicedata>
|
@ -1,39 +0,0 @@
|
||||
From c16e637c329bc9dda8544b18f5bd47a8d63ee253 Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Thu, 7 Jul 2022 20:58:36 +0300
|
||||
Subject: [PATCH] alsa: use "obj_type" as a variable name to avoid shadowing
|
||||
lua's "type" function
|
||||
|
||||
This causes a crash when running in a VM because the code tries to
|
||||
execute lua's "type()" and ends up executing the local string variable...
|
||||
|
||||
Fixes: #303
|
||||
---
|
||||
src/scripts/monitors/alsa.lua | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/scripts/monitors/alsa.lua b/src/scripts/monitors/alsa.lua
|
||||
index 43fab943..38f847f7 100644
|
||||
--- a/src/scripts/monitors/alsa.lua
|
||||
+++ b/src/scripts/monitors/alsa.lua
|
||||
@@ -49,7 +49,7 @@ function nonempty(str)
|
||||
return str ~= "" and str or nil
|
||||
end
|
||||
|
||||
-function createNode(parent, id, type, factory, properties)
|
||||
+function createNode(parent, id, obj_type, factory, properties)
|
||||
local dev_props = parent.properties
|
||||
|
||||
-- set the device id and spa factory name; REQUIRED, do not change
|
||||
@@ -199,7 +199,7 @@ function createDevice(parent, id, factory, properties)
|
||||
end
|
||||
end
|
||||
|
||||
-function prepareDevice(parent, id, type, factory, properties)
|
||||
+function prepareDevice(parent, id, obj_type, factory, properties)
|
||||
-- ensure the device has an appropriate name
|
||||
local name = "alsa_card." ..
|
||||
(properties["device.name"] or
|
||||
--
|
||||
GitLab
|
||||
|
@ -4,40 +4,70 @@ 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-0.4.11/meson.build
|
||||
Index: wireplumber-0.4.12/meson.build
|
||||
===================================================================
|
||||
--- wireplumber-0.4.11.orig/meson.build
|
||||
+++ wireplumber-0.4.11/meson.build
|
||||
--- wireplumber-0.4.12.orig/meson.build
|
||||
+++ wireplumber-0.4.12/meson.build
|
||||
@@ -1,7 +1,7 @@
|
||||
project('wireplumber', ['c'],
|
||||
version : '0.4.11',
|
||||
version : '0.4.12',
|
||||
license : 'MIT',
|
||||
- meson_version : '>= 0.59.0',
|
||||
+ meson_version : '>= 0.54.0',
|
||||
default_options : [
|
||||
'warning_level=1',
|
||||
'buildtype=debugoptimized',
|
||||
@@ -42,7 +42,11 @@ spa_dep = dependency('libspa-0.2', versi
|
||||
@@ -42,7 +42,17 @@ spa_dep = dependency('libspa-0.2', versi
|
||||
pipewire_dep = dependency('libpipewire-0.3', version: '>= 0.3.52')
|
||||
mathlib = cc.find_library('m')
|
||||
threads_dep = dependency('threads')
|
||||
-libintl_dep = dependency('intl')
|
||||
+libintl_dep = dependency('', required: false)
|
||||
+
|
||||
+if not cc.has_function('ngettext')
|
||||
+ libintl_dep = cc.find_library('intl')
|
||||
+
|
||||
+if meson.version().version_compare('>= 0.59')
|
||||
+ libintl_dep = dependency('intl')
|
||||
+else
|
||||
+ libintl_dep = dependency('', required: false)
|
||||
+
|
||||
+ if not cc.has_function('ngettext')
|
||||
+ libintl_dep = cc.find_library('intl')
|
||||
+ endif
|
||||
+endif
|
||||
|
||||
system_lua = get_option('system-lua')
|
||||
if system_lua
|
||||
@@ -131,8 +135,8 @@ endif
|
||||
@@ -129,8 +139,13 @@ if get_option('tests')
|
||||
subdir('tests')
|
||||
endif
|
||||
|
||||
-builddir = meson.project_build_root()
|
||||
-srcdir = meson.project_source_root()
|
||||
+if meson.version().version_compare('>= 0.56')
|
||||
+ builddir = meson.project_build_root()
|
||||
+ srcdir = meson.project_source_root()
|
||||
+else
|
||||
+ builddir = meson.build_root()
|
||||
+ srcdir = meson.source_root()
|
||||
+endif
|
||||
|
||||
conf_uninstalled = configuration_data()
|
||||
conf_uninstalled.set('MESON', '')
|
||||
-conf_uninstalled.set('MESON_SOURCE_ROOT', meson.project_source_root())
|
||||
-conf_uninstalled.set('MESON_BUILD_ROOT', meson.project_build_root())
|
||||
+conf_uninstalled.set('MESON_SOURCE_ROOT', meson.source_root())
|
||||
+conf_uninstalled.set('MESON_BUILD_ROOT', meson.build_root())
|
||||
@@ -150,10 +165,12 @@ wireplumber_uninstalled = custom_target(
|
||||
command : ['cp', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
|
||||
wp_uninstalled = configure_file(
|
||||
input : 'wp-uninstalled.sh',
|
||||
-devenv = environment({
|
||||
- 'WIREPLUMBER_MODULE_DIR': builddir / 'modules',
|
||||
- 'WIREPLUMBER_CONFIG_DIR': srcdir / 'src' / 'config',
|
||||
- 'WIREPLUMBER_DATA_DIR': srcdir / 'src',
|
||||
-})
|
||||
+if meson.version().version_compare('>= 0.58')
|
||||
+ devenv = environment({
|
||||
+ 'WIREPLUMBER_MODULE_DIR': builddir / 'modules',
|
||||
+ 'WIREPLUMBER_CONFIG_DIR': srcdir / 'src' / 'config',
|
||||
+ 'WIREPLUMBER_DATA_DIR': srcdir / 'src',
|
||||
+ })
|
||||
|
||||
-meson.add_devenv(devenv)
|
||||
+ meson.add_devenv(devenv)
|
||||
+endif
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:baf083fbb6f948631a0392ee8ffcea60afac4b4d081b049153fa7c66d5b4d9f5
|
||||
size 2116620
|
3
wireplumber-0.4.12.obscpio
Normal file
3
wireplumber-0.4.12.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e71c251d3034e4a21ea0e69ba0bf899efdca0e0c80db2b9b9f88bc953d3f4cbc
|
||||
size 2133516
|
@ -1,3 +1,48 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 4 13:01:17 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
|
||||
|
||||
- Update to version 0.4.12:
|
||||
* Changes
|
||||
- WirePlumber now maintains a stack of previously configured
|
||||
default nodes and prioritises to one of those when the
|
||||
actively configured default node becomes unavailable, before
|
||||
calculating the next default using priorities.
|
||||
- Updated bluetooth scripts to support the name changes that
|
||||
happened in PipeWire 0.3.59 and also support the experimental
|
||||
Bluetooth LE functionality.
|
||||
- Changed the naming of bluetooth nodes to not include the
|
||||
profile in it; this allows maintaining existing links when
|
||||
switching between a2dp and hfp.
|
||||
- The default volume for new outputs has changed to be 40% in
|
||||
cubic scale (= -24 dB) instead of linear
|
||||
(= 74% cubic / -8 dB) that it was before.
|
||||
- The default volume for new inputs has changed to be 100%
|
||||
rather than following the default for outputs.
|
||||
- Added ``--version`` flag on the wireplumber executable.
|
||||
- Added ``--limit`` flag on ``wpctl set-volume`` to limit the
|
||||
higher volume that can be set (useful when incrementing
|
||||
volume with a keyboard shortcut that calls into wpctl).
|
||||
- The properties of the alsa midi node can now be set in the
|
||||
config files.
|
||||
* Fixes
|
||||
- Fixed a crash in lua code that would happen when running in a
|
||||
VM.
|
||||
- Fixed a crash that would happen when re-connecting to D-Bus.
|
||||
- Fixed a mistake in the code that would cause device
|
||||
reservation not to work properly.
|
||||
- Fixed ``wpctl clear-default`` to accept 0 as a valid setting ID.
|
||||
- Fixed the logic of choosing the best profile after the active
|
||||
profile of a device becomes unavailable
|
||||
- Fixed a regression that would cause PulseAudio "corked"
|
||||
streams to not properly link and cause busy loops.
|
||||
- Fixed an issue parsing spa-json objects that have a nested
|
||||
object as the value of their last property.
|
||||
- Rebase reduce-meson-required-version.patch
|
||||
- Drop patches already upstream:
|
||||
* fix-alsa.patch
|
||||
* 0001-dbus-fix-crash-when-trying-to-reconnect.patch
|
||||
* 398.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 5 21:07:13 UTC 2022 - Atri Bhattacharya <badshah400@gmail.com>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
name: wireplumber
|
||||
version: 0.4.11
|
||||
mtime: 1657027335
|
||||
commit: 80b3559963f0ad40a7bfa6c23b0098275c0b5ebe
|
||||
version: 0.4.12
|
||||
mtime: 1664889909
|
||||
commit: 6f6e5df9c1b223907efa8dcbfcd538821d0dabc4
|
||||
|
@ -22,7 +22,7 @@
|
||||
%define sover 0
|
||||
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
|
||||
Name: wireplumber
|
||||
Version: 0.4.11
|
||||
Version: 0.4.12
|
||||
Release: 0
|
||||
Summary: Session / policy manager implementation for PipeWire
|
||||
License: MIT
|
||||
@ -32,17 +32,13 @@ Source0: wireplumber-%{version}.tar.xz
|
||||
Source1: split-config-file.py
|
||||
# PATCH-FIX-OPENSUSE reduce-meson-required-version.patch
|
||||
Patch0: reduce-meson-required-version.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: fix-alsa.patch
|
||||
Patch2: 0001-dbus-fix-crash-when-trying-to-reconnect.patch
|
||||
Patch3: https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/398.patch
|
||||
# docs
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: graphviz
|
||||
# /docs
|
||||
BuildRequires: cmake
|
||||
BuildRequires: fdupes
|
||||
%if 0%{?sle_version} == 150300
|
||||
%if 0%{?sle_version} <= 150300
|
||||
BuildRequires: meson >= 0.54.0
|
||||
%else
|
||||
BuildRequires: meson >= 0.59.0
|
||||
@ -141,12 +137,9 @@ the wireplumber shared library.
|
||||
|
||||
%prep
|
||||
%autosetup -N
|
||||
%if 0%{?sle_version} == 150300
|
||||
%if 0%{?sle_version} <= 150300
|
||||
%patch0 -p1
|
||||
%endif
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
pushd src/config/main.lua.d
|
||||
python3 %{SOURCE1}
|
||||
|
Loading…
Reference in New Issue
Block a user