From 6931ce9558854abd4bb70f61f3f465896f0a87b0 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 8 Mar 2021 22:26:11 +0100 Subject: [PATCH] output/wasapi: make the Thread a field, not a base class --- src/output/plugins/wasapi/WasapiOutputPlugin.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx index d049ad802..dc9f27107 100644 --- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx +++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx @@ -157,8 +157,9 @@ SetDSDFallback(AudioFormat &audio_format) noexcept } // namespace -class WasapiOutputThread : public Thread { +class WasapiOutputThread { friend class WasapiOutput; + Thread thread{BIND_THIS_METHOD(Work)}; WinEvent event; WinEvent data_poped; IAudioClient &client; @@ -181,18 +182,18 @@ public: ComPtr &&_render_client, const UINT32 _frame_size, const UINT32 _buffer_size_in_frames, bool _is_exclusive) - :Thread(BIND_THIS_METHOD(Work)), client(_client), + :client(_client), render_client(std::move(_render_client)), frame_size(_frame_size), buffer_size_in_frames(_buffer_size_in_frames), is_exclusive(_is_exclusive), spsc_buffer(_buffer_size_in_frames * 4 * _frame_size) { SetEventHandle(client, event.handle()); - Start(); + thread.Start(); } void Finish() noexcept { SetStatus(Status::FINISH); - Join(); + thread.Join(); } void Play() noexcept { return SetStatus(Status::PLAY); }