From 2536b0da83cfc9ff2eb1fc8d5d4950cb08370d94 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 19 Jun 2009 08:09:13 +0200 Subject: decoder_thread: reopen the stream after file_decode() has failed When decoding a local file, the decoder thread tries to run all matching decoders, until one succeeds. Both file_decode() and stream_decode() can decode a stream, but MPD closes the stream before calling file_decode(). Problem is: when this decoder fails, and the next's stream_decode() method is invoked, the input_stream is still closed. This patch reopens it. --- src/decoder_thread.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/decoder_thread.c b/src/decoder_thread.c index c649f3a34..2b1a6299a 100644 --- a/src/decoder_thread.c +++ b/src/decoder_thread.c @@ -186,6 +186,17 @@ static void decoder_run_song(const struct song *song, const char *uri) if (ret) break; } else if (plugin->stream_decode != NULL) { + if (!close_instream) { + /* the input_stream object has + been closed before + decoder_file_decode() - + reopen it */ + if (input_stream_open(&input_stream, uri)) + close_instream = true; + else + continue; + } + ret = decoder_stream_decode(plugin, &decoder, &input_stream); if (ret) -- cgit v1.2.3