From 20346b0da454a114a9eb3dc99fcdf5f984d45240 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 2 Oct 2014 21:48:52 +0200 Subject: DecoderThread: use OpenLocalInputStream() for local files --- src/decoder/DecoderThread.cxx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/decoder/DecoderThread.cxx b/src/decoder/DecoderThread.cxx index b2b41b661..257a0d4ae 100644 --- a/src/decoder/DecoderThread.cxx +++ b/src/decoder/DecoderThread.cxx @@ -30,6 +30,7 @@ #include "fs/AllocatedPath.hxx" #include "DecoderAPI.hxx" #include "input/InputStream.hxx" +#include "input/LocalOpen.hxx" #include "DecoderList.hxx" #include "util/UriUtil.hxx" #include "util/Error.hxx" @@ -107,6 +108,24 @@ decoder_input_stream_open(DecoderControl &dc, const char *uri) return is; } +static InputStream * +decoder_input_stream_open(DecoderControl &dc, Path path) +{ + Error error; + + InputStream *is = OpenLocalInputStream(path, dc.mutex, dc.cond, error); + if (is == nullptr) { + if (error.IsDefined()) + LogError(error); + + return nullptr; + } + + assert(is->IsReady()); + + return is; +} + static bool decoder_stream_decode(const DecoderPlugin &plugin, Decoder &decoder, @@ -308,7 +327,7 @@ TryDecoderFile(Decoder &decoder, Path path_fs, const char *suffix, dc.Unlock(); } else if (plugin.stream_decode != nullptr) { InputStream *input_stream = - decoder_input_stream_open(dc, path_fs.c_str()); + decoder_input_stream_open(dc, path_fs); if (input_stream == nullptr) return false; -- cgit v1.2.3