From 73f9824ddf7c7a917b89f0bb500985c15273530d Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Mon, 8 Mar 2021 19:53:50 +0100
Subject: [PATCH] output/wasapi: eliminate `friend` declaration

---
 src/output/plugins/wasapi/WasapiOutputPlugin.cxx | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
index e7075c0b5..5e0226930 100644
--- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
+++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx
@@ -158,7 +158,6 @@ SetDSDFallback(AudioFormat &audio_format) noexcept
 } // namespace
 
 class WasapiOutputThread {
-	friend class WasapiOutput;
 	Thread thread{BIND_THIS_METHOD(Work)};
 	WinEvent event;
 	WinEvent data_poped;
@@ -204,6 +203,11 @@ public:
 	void Play() noexcept { return SetStatus(Status::PLAY); }
 	void Pause() noexcept { return SetStatus(Status::PAUSE); }
 
+	std::size_t Push(ConstBuffer<void> input) noexcept {
+		return spsc_buffer.push(static_cast<const BYTE *>(input.data),
+					input.size);
+	}
+
 	/**
 	 * Instruct the thread to discard the buffer (and wait for
 	 * completion).  This needs to be done inside this thread,
@@ -672,8 +676,7 @@ WasapiOutput::Play(const void *chunk, size_t size)
 		return size;
 
 	do {
-		const size_t consumed_size = thread->spsc_buffer.push(
-			static_cast<const BYTE *>(input.data), input.size);
+		const size_t consumed_size = thread->Push({chunk, size});
 
 		if (!is_started) {
 			is_started = true;