Files
mpd/src
Max Kellermann 4cdcaa8630 output/alsa: don't call snd_pcm_drain() if nothing was written
Works around a problem where MPD goes into a busy loop because
snd_pcm_drain() always returns `-EAGAIN` without making any progress
(fixes #425).

This problem was triggered by snd_pcm_drain() after snd_pcm_cancel()
and snd_pcm_prepare(), but without submitting any data with
snd_pcm_writei().

I believe this is a kernel bug: in non-blocking mode, the kernel's
snd_pcm_drain() function returns early.  In this mode, it only checks
whether snd_pcm_drain_done() has been called already, but
snd_pcm_drain_done() is never called if no data was submitted.

In blocking mode, the following `for` loop detects this condition, so
snd_pcm_drain_done() is not necessary, but without this extra check,
we get `-EAGAIN` forever.
2018-11-16 12:49:37 +01:00
..
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-11-12 12:09:02 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-11-12 12:49:01 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 14:30:34 +01:00
2018-07-17 23:02:53 +02:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-24 20:25:32 +02:00
2018-10-24 20:25:32 +02:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00