Commit 8420f142 authored by Max Kellermann's avatar Max Kellermann

player_thread: drain audio outputs at the end of the playlist

When there's no queued song, and the current one has finished playing, first make sure that the hardware outputs have really finished playing the last chunk: call the drain() method in all audio outputs. Without this patch, MPD stopped playback shortly before the ALSA sound card had finished playing.
parent 3359f878
......@@ -43,6 +43,8 @@ ver 0.16 (20??/??/??)
- httpd: bind port when output is enabled
- wildcards allowed in audio_format configuration
- consistently lock audio output objects
* player:
- drain audio outputs at the end of the playlist
* mixers:
- removed support for legacy mixer configuration
- reimplemented software volume as mixer+filter plugin
......
......@@ -874,8 +874,12 @@ static void do_play(struct decoder_control *dc)
/* check the size of the pipe again, because
the decoder thread may have added something
since we last checked */
if (music_pipe_size(player.pipe) == 0)
if (music_pipe_size(player.pipe) == 0) {
/* wait for the hardware to finish
playback */
audio_output_all_drain();
break;
}
} else {
/* the decoder is too busy and hasn't provided
new PCM data in time: send silence (if the
......
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