Antonio Larrosa
e4f628e84d
- Update to version 0.3.78: * Highlights - An old regression was fixed with where some nodes would not run. - A regression was fixed where removed events would not be shown in some cases. This would result in duplicate entries in audio clients. - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption a little. - ACP will now set a UCM verb before probing the pro-audio devices. - More bugfixes and improvements. * PipeWire - An old regression was fixed with where some nodes would not run. (#3405) - Suspend was improved a little to avoid races when the session manager would suspend right when a driver was starting. * Modules - module-rtp-sap does not use the deprecated inet_aton anymore. - Fix an off-by-one in the vban audio receiver. Tweak the rate adaption a little. (#3380) * SPA - ACP will now set a UCM verb before probing the pro-audio devices. (#3407) - The mandatory flag will be set now on the video modifiers. - EVL was updated to Xenomai4 r46 and xbuf creation was improved. - An option was added to force colors in the log even when logging to !tty. - The return type of spa_pod_builder_control() was fixed. OBS-URL: https://build.opensuse.org/request/show/1105883 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=150
45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
From 3b052eaa9986c2f5182eb8a1b2f2b5c10be31a12 Mon Sep 17 00:00:00 2001
|
|
From: Wim Taymans <wtaymans@redhat.com>
|
|
Date: Thu, 24 Aug 2023 09:50:28 +0200
|
|
Subject: [PATCH] impl-node: improve suspend
|
|
|
|
Make sure we can only suspend when the node is (going to) IDLE. We don't
|
|
really want to allow applications to suspend a node that is running or
|
|
starting up.
|
|
|
|
This might fix a race when a node is suspended at the same time it is
|
|
started and cause silence. It also fixes the issue of total silence when
|
|
doing "pactl suspend <node> 1" on a running node.
|
|
|
|
See #3378
|
|
---
|
|
src/pipewire/impl-node.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c
|
|
index ca431c389..ff9effedc 100644
|
|
--- a/src/pipewire/impl-node.c
|
|
+++ b/src/pipewire/impl-node.c
|
|
@@ -591,6 +591,7 @@ static int node_send_command(void *object, const struct spa_command *command)
|
|
{
|
|
struct resource_data *data = object;
|
|
struct pw_impl_node *node = data->node;
|
|
+ struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
|
uint32_t id = SPA_NODE_COMMAND_ID(command);
|
|
|
|
pw_log_debug("%p: got command %d (%s)", node, id,
|
|
@@ -598,7 +599,9 @@ static int node_send_command(void *object, const struct spa_command *command)
|
|
|
|
switch (id) {
|
|
case SPA_NODE_COMMAND_Suspend:
|
|
- suspend_node(node);
|
|
+ if (node->info.state == PW_NODE_STATE_ERROR ||
|
|
+ impl->pending_state == PW_NODE_STATE_IDLE)
|
|
+ suspend_node(node);
|
|
break;
|
|
default:
|
|
spa_node_send_command(node->node, command);
|
|
--
|
|
GitLab
|
|
|