From 85cc46ad6fc9c7e2edfc274011f5c7a94e5e0b3e Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 7 Mar 2009 21:41:23 +0100 Subject: [PATCH] decoder_internal: don't push empty chunk into pipe When the decoder chunk is empty in decoder_flush_chunk(), don't push it into the music pipe - return it to the music buffer instead. An empty chunk in the pipe wastes resources for no advantage. --- src/decoder_internal.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/decoder_internal.c b/src/decoder_internal.c index 120115ed2..98a000dd7 100644 --- a/src/decoder_internal.c +++ b/src/decoder_internal.c @@ -22,6 +22,7 @@ #include "pipe.h" #include "input_stream.h" #include "buffer.h" +#include "chunk.h" #include @@ -73,6 +74,10 @@ decoder_flush_chunk(struct decoder *decoder) assert(decoder != NULL); assert(decoder->chunk != NULL); - music_pipe_push(dc.pipe, decoder->chunk); + if (music_chunk_is_empty(decoder->chunk)) + music_buffer_return(dc.buffer, decoder->chunk); + else + music_pipe_push(dc.pipe, decoder->chunk); + decoder->chunk = NULL; }