Commit 6ccc2541 authored by Max Kellermann's avatar Max Kellermann

output/alsa: throw after snd_pcm_drain() error

parent 7db24504
......@@ -258,10 +258,12 @@ private:
/**
* Drain all buffers. To be run in #EventLoop's thread.
*
* Throws on error.
*
* @return true if draining is complete, false if this method
* needs to be called again later
*/
bool DrainInternal() noexcept;
bool DrainInternal();
/**
* Stop playback immediately, dropping all buffers. To be run
......@@ -711,7 +713,7 @@ AlsaOutput::Recover(int err) noexcept
}
inline bool
AlsaOutput::DrainInternal() noexcept
AlsaOutput::DrainInternal()
{
/* drain ring_buffer */
CopyRingToPeriodBuffer();
......@@ -747,7 +749,13 @@ AlsaOutput::DrainInternal() noexcept
} else
result = snd_pcm_drain(pcm);
return result != -EAGAIN;
if (result == 0)
return true;
else if (result == -EAGAIN)
return false;
else
throw FormatRuntimeError("snd_pcm_drain() failed: %s",
snd_strerror(-result));
}
void
......
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