From b3c82f888691670e272b522a92be8dfb5f1e6b32 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Tue, 16 May 2017 07:12:30 +0200
Subject: [PATCH] output/{osx,haiku,pulse,sles}: add missing "noexcept"

Fixes build failure on OS X, closes #44.  With the other plugins,
that's not critical, because those use the AudioOutputWrapper, which
hides this problem.
---
 NEWS                                         | 2 ++
 src/output/plugins/HaikuOutputPlugin.cxx     | 4 ++--
 src/output/plugins/OSXOutputPlugin.cxx       | 2 +-
 src/output/plugins/PulseOutputPlugin.cxx     | 4 ++--
 src/output/plugins/sles/SlesOutputPlugin.cxx | 2 +-
 5 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/NEWS b/NEWS
index 748616d44..c4aefd52d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
 ver 0.20.8 (not yet released)
+* output
+  - osx: fix build failure due to missing "noexcept"
 
 ver 0.20.7 (2017/05/15)
 * database
diff --git a/src/output/plugins/HaikuOutputPlugin.cxx b/src/output/plugins/HaikuOutputPlugin.cxx
index 5d0371e9e..732a90900 100644
--- a/src/output/plugins/HaikuOutputPlugin.cxx
+++ b/src/output/plugins/HaikuOutputPlugin.cxx
@@ -79,7 +79,7 @@ public:
 	size_t Play(const void *chunk, size_t size);
 	void Cancel();
 
-	std::chrono::steady_clock::duration Delay();
+	std::chrono::steady_clock::duration Delay() noexcept;
 
 	void FillBuffer(void* _buffer, size_t size,
 		gcc_unused const media_raw_audio_format& _format);
@@ -309,7 +309,7 @@ HaikuOutput::Play(const void *chunk, size_t size)
 }
 
 inline std::chrono::steady_clock::duration
-HaikuOutput::Delay()
+HaikuOutput::Delay() noexcept
 {
 	unsigned delay = buffer_filled ? 0 : buffer_delay;
 
diff --git a/src/output/plugins/OSXOutputPlugin.cxx b/src/output/plugins/OSXOutputPlugin.cxx
index 5c9d55a2e..020044a47 100644
--- a/src/output/plugins/OSXOutputPlugin.cxx
+++ b/src/output/plugins/OSXOutputPlugin.cxx
@@ -670,7 +670,7 @@ osx_output_play(AudioOutput *ao, const void *chunk, size_t size)
 }
 
 static std::chrono::steady_clock::duration
-osx_output_delay(AudioOutput *ao)
+osx_output_delay(AudioOutput *ao) noexcept
 {
 	OSXOutput *od = (OSXOutput *)ao;
 	return od->ring_buffer->write_available()
diff --git a/src/output/plugins/PulseOutputPlugin.cxx b/src/output/plugins/PulseOutputPlugin.cxx
index 6e9bc7344..01302e53d 100644
--- a/src/output/plugins/PulseOutputPlugin.cxx
+++ b/src/output/plugins/PulseOutputPlugin.cxx
@@ -100,7 +100,7 @@ public:
 	void Open(AudioFormat &audio_format);
 	void Close();
 
-	std::chrono::steady_clock::duration Delay();
+	std::chrono::steady_clock::duration Delay() noexcept;
 	size_t Play(const void *chunk, size_t size);
 	void Cancel();
 	bool Pause();
@@ -740,7 +740,7 @@ PulseOutput::StreamPause(bool pause)
 }
 
 inline std::chrono::steady_clock::duration
-PulseOutput::Delay()
+PulseOutput::Delay() noexcept
 {
 	Pulse::LockGuard lock(mainloop);
 
diff --git a/src/output/plugins/sles/SlesOutputPlugin.cxx b/src/output/plugins/sles/SlesOutputPlugin.cxx
index da88662cc..bc6c214ca 100644
--- a/src/output/plugins/sles/SlesOutputPlugin.cxx
+++ b/src/output/plugins/sles/SlesOutputPlugin.cxx
@@ -96,7 +96,7 @@ public:
 	void Open(AudioFormat &audio_format);
 	void Close();
 
-	std::chrono::steady_clock::duration Delay() {
+	std::chrono::steady_clock::duration Delay() noexcept {
 		return pause && !cancel
 			? std::chrono::milliseconds(100)
 			: std::chrono::steady_clock::duration::zero();