Update to 0.3.9
This commit is contained in:
parent
f809864924
commit
59a8b968a7
@ -1,49 +0,0 @@
|
||||
From d2452e1340038539bfbe3948fe61fe8a7b214f85 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
From 77bd687bac833055b82e2bb6137e2be5fcb77d21 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
From 55bef12cda37490ad3555ca0dc724697241c33f1 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
From 0d6bbaa7e1c72241b3b80cf3fb631a753b654592 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
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
|
||||
|
||||
@ -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 <wtaymans@redhat.com> - 0.3.9-1
|
||||
- Update to 0.3.9
|
||||
|
||||
* Tue Aug 04 2020 Wim Taymans <wtaymans@redhat.com> - 0.3.8-3
|
||||
- Add patch to avoid segfault when iterating ports.
|
||||
- Fixes #1865827
|
||||
|
||||
Loading…
Reference in New Issue
Block a user