blob: 6f7d394203cb846c662a87532d635f8ad290aec0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
From c8dae95eff60419fdff88d55400b6cbaacac137d Mon Sep 17 00:00:00 2001
From: Max Kellermann <max.kellermann@gmail.com>
Date: Sat, 9 Jul 2022 00:59:35 +0200
Subject: [PATCH] output/PipeWire: after Cancel(), refill buffer before
resuming playback
Deactivate the stream in Cancel(). This fixes stuttering after a
manual song change by refilling the whole ring buffer before
reactivating the stream.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1354
Upstream-Status: Backport [https://github.com/MusicPlayerDaemon/MPD/commit/c8dae95eff60419fdff88d55400b6cbaacac137d]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx
index 0f8550d41..16febe909 100644
--- a/src/output/plugins/PipeWireOutputPlugin.cxx
+++ b/src/output/plugins/PipeWireOutputPlugin.cxx
@@ -901,6 +901,15 @@ PipeWireOutput::Cancel() noexcept
/* clear libpipewire's buffer */
pw_stream_flush(stream, false);
drained = true;
+
+ /* pause the PipeWire stream so libpipewire ceases invoking
+ the "process" callback (we have no data until our Play()
+ method gets called again); the stream will be resume by
+ Play() after the ring_buffer has been refilled */
+ if (active) {
+ active = false;
+ pw_stream_set_active(stream, false);
+ }
}
bool
--
2.39.0
|