From 0a97e68aa9dfaea4dab9961479134d23c6007276 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 8 Mar 2021 23:02:43 +0100 Subject: [PATCH] output/wasapi: start after the buffer has been filled Postpone the Start() call until there is something to be played. --- .../plugins/wasapi/WasapiOutputPlugin.cxx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx index a9787cf4d..eed47591b 100644 --- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx +++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx @@ -355,16 +355,10 @@ try { return; } - if (!started) { - if (current_state != Status::PLAY) - /* don't bother starting the - IAudioClient if we're - paused */ - continue; - - Start(client); - started = true; - } + if (!started && current_state != Status::PLAY) + /* don't bother starting the IAudioClient if + we're paused */ + continue; UINT32 write_in_frames = buffer_size_in_frames; if (!is_exclusive) { @@ -387,6 +381,11 @@ try { AtScopeExit(&) { render_client->ReleaseBuffer(write_in_frames, mode); + + if (!started) { + Start(client); + started = true; + } }; if (current_state == Status::PLAY) {