diff options
author | 2023-02-19 17:50:17 -0500 | |
---|---|---|
committer | 2023-02-19 17:50:17 -0500 | |
commit | eaed764bc0a02029287d2531bedf13ce123641ee (patch) | |
tree | 6be82a7ee70014976ffdc073edb93fbeb6110d42 /recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch | |
parent | 1b347d8823db32ee0b58bacd8c8d54553aca1f2f (diff) |
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 <scott.murray@konsulko.com>
Diffstat (limited to 'recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch')
-rw-r--r-- | recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch b/recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch new file mode 100644 index 00000000..429e4650 --- /dev/null +++ b/recipes-multimedia/musicpd/files/0001-output-PipeWire-activate-stream-in-Drain.patch @@ -0,0 +1,34 @@ +From 6b430ba271f6d45b3f58c256cb8fede3b04f3b7a Mon Sep 17 00:00:00 2001 +From: Max Kellermann <max.kellermann@gmail.com> +Date: Sat, 9 Jul 2022 00:21:27 +0200 +Subject: [PATCH] output/PipeWire: activate stream in Drain() + +Upstream-Status: Backport [https://github.com/MusicPlayerDaemon/MPD/commit/6b430ba271f6d45b3f58c256cb8fede3b04f3b7a] +Signed-off-by: Scott Murray <scott.murray@konsulko.com> + +--- +diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx +index 524ab3d87..ccdf5c0e4 100644 +--- a/src/output/plugins/PipeWireOutputPlugin.cxx ++++ b/src/output/plugins/PipeWireOutputPlugin.cxx +@@ -866,6 +866,17 @@ PipeWireOutput::Drain() + { + const PipeWire::ThreadLoopLock lock(thread_loop); + ++ if (drained) ++ return; ++ ++ if (!active) { ++ /* there is data in the ring_buffer, but the stream is ++ not yet active; activate it now to ensure it is ++ played before this method returns */ ++ active = true; ++ pw_stream_set_active(stream, true); ++ } ++ + drain_requested = true; + AtScopeExit(this) { drain_requested = false; }; + +-- +2.39.0 + |