output/Thread: move code to method InternalDrain()

This commit is contained in:
Max Kellermann 2018-01-02 17:12:00 +01:00
parent b93e3b2cf6
commit b0199245d5
2 changed files with 17 additions and 4 deletions

View File

@ -519,6 +519,13 @@ private:
*/
void InternalPause() noexcept;
/**
* Runs inside the OutputThread.
* Caller must lock the mutex.
* Handles exceptions.
*/
void InternalDrain() noexcept;
/**
* The OutputThread.
*/

View File

@ -362,6 +362,14 @@ AudioOutputControl::InternalPause() noexcept
skip_delay = true;
}
inline void
AudioOutputControl::InternalDrain() noexcept
{
const ScopeUnlock unlock(mutex);
output->Drain();
}
void
AudioOutputControl::Task()
{
@ -421,10 +429,8 @@ AudioOutputControl::Task()
continue;
case Command::DRAIN:
if (open) {
const ScopeUnlock unlock(mutex);
output->Drain();
}
if (open)
InternalDrain();
CommandFinished();
continue;