diff --git a/src/output/Filtered.cxx b/src/output/Filtered.cxx index 45c957141..a38add5c4 100644 --- a/src/output/Filtered.cxx +++ b/src/output/Filtered.cxx @@ -196,13 +196,7 @@ FilteredAudioOutput::BeginPause() noexcept } bool -FilteredAudioOutput::IteratePause() noexcept +FilteredAudioOutput::IteratePause() { - try { - return output->Pause(); - } catch (...) { - FormatError(std::current_exception(), "Failed to pause %s", - GetLogName()); - return false; - } + return output->Pause(); } diff --git a/src/output/Filtered.hxx b/src/output/Filtered.hxx index 97d37765a..11a0ac742 100644 --- a/src/output/Filtered.hxx +++ b/src/output/Filtered.hxx @@ -227,7 +227,7 @@ public: void Cancel() noexcept; void BeginPause() noexcept; - bool IteratePause() noexcept; + bool IteratePause(); void EndPause() noexcept{ } diff --git a/src/output/Thread.cxx b/src/output/Thread.cxx index b42d517d7..232145ce1 100644 --- a/src/output/Thread.cxx +++ b/src/output/Thread.cxx @@ -338,10 +338,14 @@ AudioOutputControl::InternalPause(std::unique_lock &lock) noexcept if (!WaitForDelay(lock)) break; - bool success; - { + bool success = false; + try { const ScopeUnlock unlock(mutex); success = output->IteratePause(); + } catch (...) { + FormatError(std::current_exception(), + "Failed to pause %s", + GetLogName()); } if (!success) {