diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx index db61fff3f..f415c51e0 100644 --- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx +++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx @@ -234,7 +234,11 @@ class WasapiOutput final : public AudioOutput { const bool dop_setting; #endif - bool is_started = false; + /** + * Only valid if the output is open. + */ + bool is_started; + std::atomic_flag not_interrupted = true; const std::string device_config; @@ -583,6 +587,8 @@ WasapiOutput::DoOpen(AudioFormat &audio_format) watermark = buffer_size_in_frames * 3 * FrameSize(); thread.emplace(*client, std::move(render_client), FrameSize(), buffer_size_in_frames, is_exclusive); + + is_started = false; } void @@ -596,7 +602,6 @@ WasapiOutput::Close() noexcept FormatError(std::current_exception(), "exception while stopping"); } - is_started = false; thread->Finish(); com_worker->Async([&]() { thread.reset();