From 384d93feb21726ab34a116a87f7dea4b9ea84a26 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 19 Feb 2023 17:50:17 -0500 Subject: mpd: Backport PipeWire output fixes Backport four PipeWire output plugin fixes related to handling very short audio files. They fix MPD hanging in the Drain call of the plugin when playing very short files like truncated ones attached to SPEC-4661. These patches can be removed when MPD is upgraded to 0.23.8 or newer. Bug-AGL: SPEC-4661 Change-Id: I42b5dd4c08863c7209a75f6ede777402a11cfc87 Signed-off-by: Scott Murray (cherry picked from commit eaed764bc0a02029287d2531bedf13ce123641ee) --- ...t-PipeWire-skip-Cancel-if-already-drained.patch | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 recipes-multimedia/musicpd/files/0002-output-PipeWire-skip-Cancel-if-already-drained.patch (limited to 'recipes-multimedia/musicpd/files/0002-output-PipeWire-skip-Cancel-if-already-drained.patch') diff --git a/recipes-multimedia/musicpd/files/0002-output-PipeWire-skip-Cancel-if-already-drained.patch b/recipes-multimedia/musicpd/files/0002-output-PipeWire-skip-Cancel-if-already-drained.patch new file mode 100644 index 00000000..a01a04a0 --- /dev/null +++ b/recipes-multimedia/musicpd/files/0002-output-PipeWire-skip-Cancel-if-already-drained.patch @@ -0,0 +1,26 @@ +From 493677ff81e708133f87e15157c5dd5131adad48 Mon Sep 17 00:00:00 2001 +From: Max Kellermann +Date: Sat, 9 Jul 2022 00:53:52 +0200 +Subject: [PATCH] output/PipeWire: skip Cancel() if already drained + +Upstream-Status: Backport [https://github.com/MusicPlayerDaemon/MPD/commit/493677ff81e708133f87e15157c5dd5131adad48] +Signed-off-by: Scott Murray + +--- +diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx +index ccdf5c0e4..7184edfa5 100644 +--- a/src/output/plugins/PipeWireOutputPlugin.cxx ++++ b/src/output/plugins/PipeWireOutputPlugin.cxx +@@ -892,6 +892,9 @@ PipeWireOutput::Cancel() noexcept + const PipeWire::ThreadLoopLock lock(thread_loop); + interrupted = false; + ++ if (drained) ++ return; ++ + ring_buffer->reset(); + } + +-- +2.39.0 + -- cgit 1.2.3-korg