From 2f76db4c7842ffdb989d2081b0835a83a3219f35 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 29 Oct 2008 20:40:33 +0100 Subject: 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. --- src/output/alsa_plugin.c | 1 - src/output/ao_plugin.c | 1 - src/output/fifo_plugin.c | 1 - src/output/mvp_plugin.c | 1 - src/output/oss_plugin.c | 1 - src/output/shout_plugin.c | 9 ++------- 6 files changed, 2 insertions(+), 12 deletions(-) (limited to 'src/output') diff --git a/src/output/alsa_plugin.c b/src/output/alsa_plugin.c index 2d4f9c239..4802778dc 100644 --- a/src/output/alsa_plugin.c +++ b/src/output/alsa_plugin.c @@ -412,7 +412,6 @@ alsa_playAudio(void *data, const char *playChunk, size_t size) ERROR("closing ALSA device \"%s\" due to write " "error: %s\n", ad->device, snd_strerror(-errno)); - alsa_closeDevice(ad); return false; } continue; diff --git a/src/output/ao_plugin.c b/src/output/ao_plugin.c index d2c7dab6e..20e8cfd58 100644 --- a/src/output/ao_plugin.c +++ b/src/output/ao_plugin.c @@ -224,7 +224,6 @@ audioOutputAo_play(void *data, const char *playChunk, size_t size) if (ao_play_deconst(ad->device, playChunk, chunk_size) == 0) { audioOutputAo_error(); ERROR("closing audio device due to write error\n"); - audioOutputAo_closeDevice(ad); return false; } diff --git a/src/output/fifo_plugin.c b/src/output/fifo_plugin.c index fe85d6644..4645948e2 100644 --- a/src/output/fifo_plugin.c +++ b/src/output/fifo_plugin.c @@ -259,7 +259,6 @@ fifo_playAudio(void *data, const char *playChunk, size_t size) ERROR("Closing FIFO output \"%s\" due to write error: " "%s\n", fd->path, strerror(errno)); - fifo_closeDevice(fd); return false; } diff --git a/src/output/mvp_plugin.c b/src/output/mvp_plugin.c index 9a56e7943..61b45ba0f 100644 --- a/src/output/mvp_plugin.c +++ b/src/output/mvp_plugin.c @@ -253,7 +253,6 @@ mvp_playAudio(void *data, const char *playChunk, size_t size) continue; ERROR("closing mvp PCM device due to write error: " "%s\n", strerror(errno)); - mvp_closeDevice(md); return false; } playChunk += ret; diff --git a/src/output/oss_plugin.c b/src/output/oss_plugin.c index 26bc1b3aa..71262fefb 100644 --- a/src/output/oss_plugin.c +++ b/src/output/oss_plugin.c @@ -549,7 +549,6 @@ oss_playAudio(void *data, const char *playChunk, size_t size) continue; ERROR("closing oss device \"%s\" due to write error: " "%s\n", od->device, strerror(errno)); - oss_closeDevice(od); return false; } playChunk += ret; diff --git a/src/output/shout_plugin.c b/src/output/shout_plugin.c index 7bd806d36..00ce02590 100644 --- a/src/output/shout_plugin.c +++ b/src/output/shout_plugin.c @@ -525,7 +525,6 @@ my_shout_play(void *data, const char *chunk, size_t size) if (!sd->opened) { status = open_shout_conn(sd); if (status < 0) { - my_shout_close_device(sd); return false; } else if (status > 0) { timer_sync(sd->timer); @@ -533,15 +532,11 @@ my_shout_play(void *data, const char *chunk, size_t size) } } - if (sd->encoder->encode_func(sd, chunk, size)) { - my_shout_close_device(sd); + if (sd->encoder->encode_func(sd, chunk, size)) return false; - } - if (write_page(sd) < 0) { - my_shout_close_device(sd); + if (write_page(sd) < 0) return false; - } return true; } -- cgit v1.2.3