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
2013-01-30 21:47:12 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 19:19:07 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-11-04 22:36:17 +01:00
2018-10-31 17:54:59 +01:00
2018-11-14 12:11:57 +01:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-10-14 23:41:38 +02:00
2018-11-11 12:37:29 +01:00
2018-10-14 23:41:38 +02:00
2018-11-11 12:55:35 +01:00
2018-11-11 12:37:29 +01:00
2018-10-31 17:54:59 +01:00
2018-11-02 17:47:43 +01:00
2018-11-16 12:49:37 +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-11-02 16:50:38 +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-04 11:12:03 +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-05 21:25: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-08-19 23:08:23 +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 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-11-14 12:07:22 +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-09-21 17:11:52 +02:00
2018-09-21 19:05:25 +02:00
2018-10-31 17:54:59 +01:00
2018-10-31 17:54:59 +01:00
2018-06-22 23:11:52 +02:00
2018-06-22 23:11:52 +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-01-30 00:05:57 +01:00
2018-01-30 00:05:57 +01:00
2018-01-30 00:05:57 +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-07-17 23:40:14 +02:00
2018-07-17 23:40:14 +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