diff options
author | Max Kellermann <max@duempel.org> | 2008-10-29 20:40:33 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-29 20:40:33 +0100 |
commit | 2f76db4c7842ffdb989d2081b0835a83a3219f35 (patch) | |
tree | 19c7099501b78a2901a185f23dbb271d8a703f42 /src/output_thread.c | |
parent | 58c5bee9f0bcb46da7d113b66a4e1e2d7add9837 (diff) | |
download | mpd-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.c | 5 |
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); } |