diff --git a/0001-acp-device-remove-sources-when-destroyed.patch b/0001-acp-device-remove-sources-when-destroyed.patch deleted file mode 100644 index cea96fd..0000000 --- a/0001-acp-device-remove-sources-when-destroyed.patch +++ /dev/null @@ -1,49 +0,0 @@ -From d2452e1340038539bfbe3948fe61fe8a7b214f85 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Wed, 29 Jul 2020 12:19:33 +0200 -Subject: [PATCH 1/2] acp-device: remove sources when destroyed - -Or we end up polling wrong fds in an infinite loop. ---- - spa/plugins/alsa/alsa-acp-device.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/spa/plugins/alsa/alsa-acp-device.c b/spa/plugins/alsa/alsa-acp-device.c -index 757cd450..12812e54 100644 ---- a/spa/plugins/alsa/alsa-acp-device.c -+++ b/spa/plugins/alsa/alsa-acp-device.c -@@ -99,13 +99,20 @@ static void handle_acp_poll(struct spa_source *source) - this->sources[i].rmask = 0; - } - --static int setup_sources(struct impl *this) -+static void remove_sources(struct impl *this) - { - int i; -- - for (i = 0; i < this->n_pfds; i++) { - spa_loop_remove_source(this->loop, &this->sources[i]); - } -+ this->n_pfds = 0; -+} -+ -+static int setup_sources(struct impl *this) -+{ -+ int i; -+ -+ remove_sources(this); - - this->n_pfds = acp_card_poll_descriptors(this->card, this->pfds, MAX_POLL); - -@@ -774,6 +781,8 @@ static SPA_PRINTF_FUNC(6,0) void impl_acp_log_func(void *data, - - static int impl_clear(struct spa_handle *handle) - { -+ struct impl *this = (struct impl *) handle; -+ remove_sources(this); - return 0; - } - --- -2.26.2 - diff --git a/0001-acp-fix-size-of-array.patch b/0001-acp-fix-size-of-array.patch deleted file mode 100644 index edd8b11..0000000 --- a/0001-acp-fix-size-of-array.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 77bd687bac833055b82e2bb6137e2be5fcb77d21 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Tue, 4 Aug 2020 12:05:56 +0200 -Subject: [PATCH] acp: fix size of array - ---- - spa/plugins/alsa/acp/acp.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/spa/plugins/alsa/acp/acp.c b/spa/plugins/alsa/acp/acp.c -index cd33296d..943ed6fb 100644 ---- a/spa/plugins/alsa/acp/acp.c -+++ b/spa/plugins/alsa/acp/acp.c -@@ -317,7 +317,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) - pa_log_debug("Jack '%s' is now %s", pa_strnull(snd_hctl_elem_get_name(elem)), - plugged_in ? "plugged in" : "unplugged"); - -- size = sizeof(struct temp_port_avail) * pa_hashmap_size(impl->jacks)+1; -+ size = sizeof(struct temp_port_avail) * (pa_hashmap_size(impl->jacks)+1); - tports = tp = alloca(size); - memset(tports, 0, size); - --- -2.26.2 - diff --git a/0001-pulse-take-queued-data-into-account-when-asking-for-.patch b/0001-pulse-take-queued-data-into-account-when-asking-for-.patch deleted file mode 100644 index 57d34d3..0000000 --- a/0001-pulse-take-queued-data-into-account-when-asking-for-.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 55bef12cda37490ad3555ca0dc724697241c33f1 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Wed, 29 Jul 2020 09:49:06 +0200 -Subject: [PATCH] pulse: take queued data into account when asking for more - -Don't use always ask for the maximum amount of data in the -write_callback but subtract the queued amount of data from it or else -we will queue too much and cause huge lag. - -Fixes #258 ---- - pipewire-pulseaudio/src/stream.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/pipewire-pulseaudio/src/stream.c b/pipewire-pulseaudio/src/stream.c -index 1ac0d2b8..7b529a95 100644 ---- a/pipewire-pulseaudio/src/stream.c -+++ b/pipewire-pulseaudio/src/stream.c -@@ -552,10 +552,16 @@ static void stream_process(void *data) - update_timing_info(s); - - if (s->direction == PA_STREAM_PLAYBACK) { -+ pa_timing_info *i = &s->timing_info; -+ uint64_t queued, writable; -+ - queue_output(s); - -- if (s->write_callback && s->state == PA_STREAM_READY) -- s->write_callback(s, s->maxblock, s->write_userdata); -+ queued = i->write_index - SPA_MIN(i->read_index, i->write_index); -+ writable = s->maxblock - SPA_MIN(queued, s->maxblock); -+ -+ if (s->write_callback && s->state == PA_STREAM_READY && writable > 0) -+ s->write_callback(s, writable, s->write_userdata); - } - else { - pull_input(s); -@@ -1843,6 +1849,9 @@ int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative) - else - *r_usec = time_counter_diff(s, t, c, negative); - -+ pw_log_debug("stream %p: now:%"PRIu64" stream:%"PRIu64 -+ " res:%"PRIu64, s, t, c, *r_usec); -+ - return 0; - } - --- -2.26.2 - diff --git a/0002-policy-node-only-configure-devices-when-active.patch b/0002-policy-node-only-configure-devices-when-active.patch deleted file mode 100644 index 252369d..0000000 --- a/0002-policy-node-only-configure-devices-when-active.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0d6bbaa7e1c72241b3b80cf3fb631a753b654592 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Wed, 29 Jul 2020 12:20:24 +0200 -Subject: [PATCH 2/2] policy-node: only configure devices when active - -Wait until a node is active before we attempt to configure it or -else we don't yet have a format to configure it with. ---- - src/examples/media-session/policy-node.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c -index a0357648..f4b8c3b8 100644 ---- a/src/examples/media-session/policy-node.c -+++ b/src/examples/media-session/policy-node.c -@@ -516,13 +516,13 @@ static int rescan_node(struct impl *impl, struct node *n) - struct node *peer; - struct sm_object *obj; - -- if (n->type == NODE_TYPE_DEVICE) { -- configure_node(n, NULL); -+ if (!n->active) { -+ pw_log_debug(NAME " %p: node %d is not active", impl, n->id); - return 0; - } - -- if (!n->active) { -- pw_log_debug(NAME " %p: node %d is not active", impl, n->id); -+ if (n->type == NODE_TYPE_DEVICE) { -+ configure_node(n, NULL); - return 0; - } - --- -2.26.2 - diff --git a/pipewire.spec b/pipewire.spec index 273c61d..916ff44 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -32,8 +32,8 @@ Name: pipewire Summary: Media Sharing Server -Version: 0.3.8 -Release: 3%{?snap:.%{snap}git%{shortcommit}}%{?dist} +Version: 0.3.9 +Release: 1%{?snap:.%{snap}git%{shortcommit}}%{?dist} License: MIT URL: https://pipewire.org/ %if 0%{?gitrel} @@ -50,10 +50,6 @@ Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/p ## fedora patches Patch0: 0001-conf-disable-bluez5.patch -Patch1: 0001-pulse-take-queued-data-into-account-when-asking-for-.patch -Patch2: 0001-acp-device-remove-sources-when-destroyed.patch -Patch3: 0002-policy-node-only-configure-devices-when-active.patch -Patch4: 0001-acp-fix-size-of-array.patch BuildRequires: meson >= 0.49.0 BuildRequires: gcc @@ -214,10 +210,6 @@ This package provides a PulseAudio implementation based on PipeWire %setup -q -T -b0 -n %{name}-%{version}%{?gitrel:-%{gitrel}-g%{shortcommit}} %patch0 -p1 -b .0000 -%patch1 -p1 -b .0001 -%patch2 -p1 -b .0002 -%patch3 -p1 -b .0003 -%patch4 -p1 -b .0004 %build %ifarch armv7hl @@ -405,6 +397,9 @@ systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : %endif %changelog +* Tue Aug 04 2020 Wim Taymans - 0.3.9-1 +- Update to 0.3.9 + * Tue Aug 04 2020 Wim Taymans - 0.3.8-3 - Add patch to avoid segfault when iterating ports. - Fixes #1865827