aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_thread.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-10-29 20:40:33 +0100
committerMax Kellermann <max@duempel.org>2008-10-29 20:40:33 +0100
commit2f76db4c7842ffdb989d2081b0835a83a3219f35 (patch)
tree19c7099501b78a2901a185f23dbb271d8a703f42 /src/output_thread.c
parent58c5bee9f0bcb46da7d113b66a4e1e2d7add9837 (diff)
downloadmpd-2f76db4c7842ffdb989d2081b0835a83a3219f35.tar.gz
mpd-2f76db4c7842ffdb989d2081b0835a83a3219f35.tar.xz
mpd-2f76db4c7842ffdb989d2081b0835a83a3219f35.zip
output: close device on play error
When an output plugin fails to play a chunk, close it. This replaces various manual close() calls in nearly all plugins.
Diffstat (limited to 'src/output_thread.c')
-rw-r--r--src/output_thread.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/output_thread.c b/src/output_thread.c
index f03520013..825dfa5f5 100644
--- a/src/output_thread.c
+++ b/src/output_thread.c
@@ -62,6 +62,11 @@ static void ao_play(struct audio_output *ao)
convertAudioFormat(ao, &data, &size);
ao->result = ao->plugin->play(ao->data, data, size);
+ if (!ao->result) {
+ ao->plugin->close(ao->data);
+ ao->open = false;
+ }
+
ao_command_finished(ao);
}