summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-05-19 05:14:33 +0100
committerSam James <sam@gentoo.org>2023-05-19 05:14:40 +0100
commitbdf35f42b82cb025d8003dc4b9c6feafab1c8e99 (patch)
tree59dc683533ce6fd3a102a837f4311b2b5d8d29f0 /media-video/pipewire/files
parentdev-util/cmake: add 3.26.4 (diff)
downloadgentoo-bdf35f42b82cb025d8003dc4b9c6feafab1c8e99.tar.gz
gentoo-bdf35f42b82cb025d8003dc4b9c6feafab1c8e99.tar.bz2
gentoo-bdf35f42b82cb025d8003dc4b9c6feafab1c8e99.zip
media-video/pipewire: backport recommended JACK patch
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-video/pipewire/files')
-rw-r--r--media-video/pipewire/files/0.3.71/jack-update-bufsize-samplerate.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/media-video/pipewire/files/0.3.71/jack-update-bufsize-samplerate.patch b/media-video/pipewire/files/0.3.71/jack-update-bufsize-samplerate.patch
new file mode 100644
index 000000000000..59fb89a3e017
--- /dev/null
+++ b/media-video/pipewire/files/0.3.71/jack-update-bufsize-samplerate.patch
@@ -0,0 +1,46 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3226
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/ce71b37b58d5e251ae7acda0799f696688df11c2
+
+From ce71b37b58d5e251ae7acda0799f696688df11c2 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 18 May 2023 09:59:26 +0200
+Subject: [PATCH] jack: update bufsize and samplerate when skipping notify
+
+When we skip the notify because we are not active or we don't have a
+callback, still update the buffer_size and sample_rate fields or else
+we will keep on trying forever.
+
+Fixes #3226
+--- a/pipewire-jack/src/pipewire-jack.c
++++ b/pipewire-jack/src/pipewire-jack.c
+@@ -1027,8 +1027,6 @@ static int queue_notify(struct client *c, int type, struct object *o, int arg1,
+ struct notify *notify;
+ bool emit = false;;
+
+- if ((type & NOTIFY_ACTIVE_FLAG) && !c->active)
+- return 0;
+ switch (type) {
+ case NOTIFY_TYPE_REGISTRATION:
+ emit = c->registration_callback != NULL && o != NULL;
+@@ -1060,8 +1058,18 @@ static int queue_notify(struct client *c, int type, struct object *o, int arg1,
+ default:
+ break;
+ }
++ if ((type & NOTIFY_ACTIVE_FLAG) && !c->active)
++ emit = false;
+ if (!emit) {
+- pw_log_debug("%p: skip notify %d", c, type);
++ switch (type) {
++ case NOTIFY_TYPE_BUFFER_FRAMES:
++ c->buffer_frames = arg1;
++ break;
++ case NOTIFY_TYPE_SAMPLE_RATE:
++ c->sample_rate = arg1;
++ break;
++ }
++ pw_log_debug("%p: skip notify %08x active:%d", c, type, c->active);
+ if (o != NULL && arg1 == 0 && o->removing) {
+ o->removing = false;
+ free_object(c, o);
+--
+GitLab