Update version to 0.3.60

This commit is contained in:
Wim Taymans 2022-11-10 12:54:35 +01:00
parent c40c7a110b
commit 52893f6f6f
6 changed files with 6 additions and 230 deletions

View File

@ -1,31 +0,0 @@
From 79d688349becca7e3b145fc45cf1dacce637efbb Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 20 Oct 2022 17:44:42 +0200
Subject: [PATCH 1/4] alsa-seq: attempt to get more data in timeout
Also emit the NEED_DATA status so that the graph will pull in new
midi data even when we don't output anything.
Fixes #2775
---
spa/plugins/alsa/alsa-seq.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/spa/plugins/alsa/alsa-seq.c b/spa/plugins/alsa/alsa-seq.c
index 381bbc5e1..8da724528 100644
--- a/spa/plugins/alsa/alsa-seq.c
+++ b/spa/plugins/alsa/alsa-seq.c
@@ -803,8 +803,8 @@ static void alsa_on_timeout_event(struct spa_source *source)
update_time(state, state->current_time, false);
res = process_read(state);
- if (res > 0)
- spa_node_call_ready(&state->callbacks, res);
+ if (res >= 0)
+ spa_node_call_ready(&state->callbacks, res | SPA_STATUS_NEED_DATA);
set_timeout(state, state->next_time);
}
--
2.37.3

View File

@ -1,78 +0,0 @@
From efca9b9d7eb5c3cfc97475e94029f0af4cfdd418 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 20 Oct 2022 21:34:01 +0200
Subject: [PATCH 2/4] jack: set port valid state safely
When unregistering a port, set the port to invalid first and sync the
data loop so that it will not be used anymore from the data loop.
See #2652
---
pipewire-jack/src/pipewire-jack.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c
index 7100a41b0..54551f309 100644
--- a/pipewire-jack/src/pipewire-jack.c
+++ b/pipewire-jack/src/pipewire-jack.c
@@ -610,13 +610,9 @@ static void free_port(struct client *c, struct port *p)
{
struct mix *m;
- if (!p->valid)
- return;
-
spa_list_consume(m, &p->mix, port_link)
free_mix(c, m);
- p->valid = false;
pw_map_remove(&c->ports[p->direction], p->port_id);
free_object(c, p->object);
pw_properties_free(p->props);
@@ -1056,7 +1052,7 @@ static inline void *get_buffer_output(struct port *p, uint32_t frames, uint32_t
struct buffer *b;
struct spa_data *d;
- if (frames == 0)
+ if (frames == 0 || !p->valid)
return NULL;
if (SPA_UNLIKELY((mix = p->global_mix) == NULL))
@@ -4369,6 +4365,15 @@ jack_port_t * jack_port_register (jack_client_t *client,
return (jack_port_t *) o;
}
+static int
+do_invalidate_port(struct spa_loop *loop,
+ bool async, uint32_t seq, const void *data, size_t size, void *user_data)
+{
+ struct port *p = user_data;
+ p->valid = false;
+ return 0;
+}
+
SPA_EXPORT
int jack_port_unregister (jack_client_t *client, jack_port_t *port)
{
@@ -4389,6 +4394,9 @@ int jack_port_unregister (jack_client_t *client, jack_port_t *port)
res = -EINVAL;
goto done;
}
+ pw_data_loop_invoke(c->loop,
+ do_invalidate_port, 1, NULL, 0, !c->data_locked, p);
+
pw_log_info("%p: port %p unregister \"%s\"", client, port, o->port.name);
pw_client_node_port_update(c->node,
@@ -4566,6 +4574,8 @@ void * jack_port_get_buffer (jack_port_t *port, jack_nframes_t frames)
return SPA_PTROFF(d->data, offset, void);
}
+ if (!p->valid)
+ return NULL;
ptr = p->get_buffer(p, frames);
pw_log_trace_fp("%p: port %p buffer %p empty:%u", p->client, p, ptr, p->empty_out);
--
2.37.3

View File

@ -1,73 +0,0 @@
From dec704d8e0a4acd972f4d8a596b4a8e653f4266b Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 20 Oct 2022 21:52:49 +0200
Subject: [PATCH 3/4] bluez5: stop before freeing things
Make sure all timers are stopped before we clear our state.
See #2764
---
spa/plugins/bluez5/media-sink.c | 3 +--
spa/plugins/bluez5/media-source.c | 4 ++--
spa/plugins/bluez5/sco-sink.c | 2 ++
spa/plugins/bluez5/sco-source.c | 2 ++
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/spa/plugins/bluez5/media-sink.c b/spa/plugins/bluez5/media-sink.c
index 255bd7a43..1e4c05669 100644
--- a/spa/plugins/bluez5/media-sink.c
+++ b/spa/plugins/bluez5/media-sink.c
@@ -1663,8 +1663,7 @@ static int impl_clear(struct spa_handle *handle)
{
struct impl *this = (struct impl *) handle;
- if (this->codec_data)
- this->codec->deinit(this->codec_data);
+ do_stop(this);
if (this->codec_props && this->codec->clear_props)
this->codec->clear_props(this->codec_props);
if (this->transport)
diff --git a/spa/plugins/bluez5/media-source.c b/spa/plugins/bluez5/media-source.c
index c03d767b1..b1387da49 100644
--- a/spa/plugins/bluez5/media-source.c
+++ b/spa/plugins/bluez5/media-source.c
@@ -1452,8 +1452,8 @@ static int impl_clear(struct spa_handle *handle)
{
struct impl *this = (struct impl *) handle;
struct port *port = &this->port;
- if (this->codec_data)
- this->codec->deinit(this->codec_data);
+
+ do_stop(this);
if (this->codec_props && this->codec->clear_props)
this->codec->clear_props(this->codec_props);
if (this->transport)
diff --git a/spa/plugins/bluez5/sco-sink.c b/spa/plugins/bluez5/sco-sink.c
index d92bada2a..d0578d202 100644
--- a/spa/plugins/bluez5/sco-sink.c
+++ b/spa/plugins/bluez5/sco-sink.c
@@ -1236,6 +1236,8 @@ static int impl_get_interface(struct spa_handle *handle, const char *type, void
static int impl_clear(struct spa_handle *handle)
{
struct impl *this = (struct impl *) handle;
+
+ do_stop(this);
if (this->transport)
spa_hook_remove(&this->transport_listener);
spa_system_close(this->data_system, this->timerfd);
diff --git a/spa/plugins/bluez5/sco-source.c b/spa/plugins/bluez5/sco-source.c
index 52a1d27cc..81470d267 100644
--- a/spa/plugins/bluez5/sco-source.c
+++ b/spa/plugins/bluez5/sco-source.c
@@ -1391,6 +1391,8 @@ static int impl_get_interface(struct spa_handle *handle, const char *type, void
static int impl_clear(struct spa_handle *handle)
{
struct impl *this = (struct impl *) handle;
+
+ do_stop(this);
if (this->transport)
spa_hook_remove(&this->transport_listener);
spa_system_close(this->data_system, this->timerfd);
--
2.37.3

View File

@ -1,41 +0,0 @@
From 7aca980c4a7f60dbf5c28be6ab0b03986f5cdbb5 Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pav@iki.fi>
Date: Wed, 19 Oct 2022 18:56:09 +0300
Subject: [PATCH 4/4] bluez5: reset timers when reassigning followers
Driver timeouts need to be started/stopped when we switch from follower
to driver or vice versa.
The BT sources fail to do this, so fix it. Sinks already do it right.
---
spa/plugins/bluez5/media-source.c | 1 +
spa/plugins/bluez5/sco-source.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/spa/plugins/bluez5/media-source.c b/spa/plugins/bluez5/media-source.c
index b1387da49..515eedbe6 100644
--- a/spa/plugins/bluez5/media-source.c
+++ b/spa/plugins/bluez5/media-source.c
@@ -276,6 +276,7 @@ static int do_reassign_follower(struct spa_loop *loop,
struct impl *this = user_data;
struct port *port = &this->port;
+ set_timers(this);
spa_bt_decode_buffer_recover(&port->buffer);
return 0;
}
diff --git a/spa/plugins/bluez5/sco-source.c b/spa/plugins/bluez5/sco-source.c
index 81470d267..11c126262 100644
--- a/spa/plugins/bluez5/sco-source.c
+++ b/spa/plugins/bluez5/sco-source.c
@@ -248,6 +248,7 @@ static int do_reassign_follower(struct spa_loop *loop,
struct impl *this = user_data;
struct port *port = &this->port;
+ set_timers(this);
spa_bt_decode_buffer_recover(&port->buffer);
return 0;
}
--
2.37.3

View File

@ -1,6 +1,6 @@
%global majorversion 0
%global minorversion 3
%global microversion 59
%global microversion 60
%global apiversion 0.3
%global spaversion 0.2
@ -9,7 +9,7 @@
%global ms_version 0.4.1
# For rpmdev-bumpspec and releng automation
%global baserelease 3
%global baserelease 1
#global snapdate 20210107
#global gitcommit b17db2cebc1a5ab2c01851d29c05f79cd2f262bb
@ -80,10 +80,6 @@ Source1: https://gitlab.freedesktop.org/pipewire/media-session/-/archive/
%endif
## upstream patches
Patch0001: 0001-alsa-seq-attempt-to-get-more-data-in-timeout.patch
Patch0002: 0002-jack-set-port-valid-state-safely.patch
Patch0003: 0003-bluez5-stop-before-freeing-things.patch
Patch0004: 0004-bluez5-reset-timers-when-reassigning-followers.patch
## upstreamable patches
@ -629,6 +625,9 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || :
%endif
%changelog
* Thu Nov 10 2022 Wim Taymans <wtaymans@redhat.com> - 0.3.60-1
- Update version to 0.3.60
* Mon Oct 24 2022 Jaroslav Škarvada <jskarvad@redhat.com> - 0.3.59-3
- Enabled roc-toolkit support
Resolves: rhbz#2041189

View File

@ -1,2 +1,2 @@
SHA512 (pipewire-0.3.59.tar.gz) = 1183dc083553ece1f9157898f437996b88dc7d13ba69aa43886f5339f330130404274ceb08ac8ec05a5ccb84dfca56b524a1d4b3fb07e28a41741c5c3333eda0
SHA512 (pipewire-0.3.60.tar.gz) = 33ef5a100107f07a2f42eb008af4dc4bc67c38f4d4929e7ab865c67f16750a3f8d9baca117dc035d5bb88e6f48ce535595435a14770e982c33c349a466508e98
SHA512 (media-session-0.4.1.tar.gz) = bfce472b7260b280c0d3cd74d917f48655b5be9976c89a109e94b81af2c3664e83446e97db573cedba6e5d54dedf77195b80eb0a76f6bfc0e96e342557469f99