pipewire: add patch to fix random underruns 71/23571/1
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Fri, 10 Jan 2020 10:27:14 +0000 (12:27 +0200)
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Fri, 10 Jan 2020 11:06:39 +0000 (13:06 +0200)
Bug-AGL: SPEC-3098

Change-Id: I3f03f2c53604ad365f712e724b37df83cc302ae7
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch [new file with mode: 0644]
meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bb

diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch
new file mode 100644 (file)
index 0000000..cae4d70
--- /dev/null
@@ -0,0 +1,30 @@
+From 5946fbd2ca3a7f892b4ebc10090f62df6bb1ec88 Mon Sep 17 00:00:00 2001
+From: George Kiagiadakis <george.kiagiadakis@collabora.com>
+Date: Thu, 9 Jan 2020 19:27:23 +0200
+Subject: [PATCH] alsa-pcm: call reuse_buffers when resetting the state of the
+ buffers
+
+This allows the upstream node to put buffers back to its pool in case
+they were left around in the ready list locally when the alsa-pcm-sink
+was last paused.
+
+Fixes #203
+---
+ spa/plugins/alsa/alsa-pcm.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c
+index 63d75549..a6f22cf0 100644
+--- a/spa/plugins/alsa/alsa-pcm.c
++++ b/spa/plugins/alsa/alsa-pcm.c
+@@ -1115,6 +1115,7 @@ static void reset_buffers(struct state *this)
+               struct buffer *b = &this->buffers[i];
+               if (this->stream == SND_PCM_STREAM_PLAYBACK) {
+                       SPA_FLAG_SET(b->flags, BUFFER_FLAG_OUT);
++                      spa_node_call_reuse_buffer(&this->callbacks, 0, b->id);
+               } else {
+                       spa_list_append(&this->free, &b->link);
+                       SPA_FLAG_CLEAR(b->flags, BUFFER_FLAG_OUT);
+-- 
+2.24.1
+
index 68eb3d1..1a4e4eb 100644 (file)
@@ -6,11 +6,12 @@ SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;protocol=https;bra
     file://0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch \
     file://0004-audioconvert-always-assume-that-output-ports-are-NOT.patch \
     file://0005-module-access-add-same-sec-label-mode.patch \
+    file://0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch \
     "
 
 SRCREV = "b0932e687fc47e0872ca291531f2291d99042d70"
 
-PV = "0.2.91+git${SRCPV}+1"
+PV = "0.2.91+git${SRCPV}+2"
 S  = "${WORKDIR}/git"
 
 RDEPENDS_${PN} += "virtual/pipewire-sessionmanager virtual/pipewire-config"