Commit 59181ac5 authored by Max Kellermann's avatar Max Kellermann

output/Thread: move code to BeginPause(), IteratePause()

parent 2a831fa5
......@@ -516,6 +516,9 @@ private:
*/
bool Play();
void BeginPause();
bool IteratePause();
void Pause();
/**
......
......@@ -365,7 +365,7 @@ AudioOutput::Play()
}
inline void
AudioOutput::Pause()
AudioOutput::BeginPause()
{
{
const ScopeUnlock unlock(mutex);
......@@ -373,26 +373,40 @@ AudioOutput::Pause()
}
pause = true;
}
inline bool
AudioOutput::IteratePause()
{
bool success;
try {
const ScopeUnlock unlock(mutex);
success = ao_plugin_pause(*this);
} catch (const std::runtime_error &e) {
FormatError(e, "\"%s\" [%s] failed to pause",
name, plugin.name);
success = false;
}
if (!success)
Close(false);
return success;
}
inline void
AudioOutput::Pause()
{
BeginPause();
CommandFinished();
do {
if (!WaitForDelay())
break;
bool success;
try {
const ScopeUnlock unlock(mutex);
success = ao_plugin_pause(*this);
} catch (const std::runtime_error &e) {
FormatError(e, "\"%s\" [%s] failed to pause",
name, plugin.name);
success = false;
}
if (!success) {
Close(false);
if (!IteratePause())
break;
}
} while (command == Command::NONE);
pause = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment