diff options
author | Max Kellermann <max@duempel.org> | 2009-03-06 00:42:01 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-03-06 00:42:01 +0100 |
commit | 000b2d4f3a9c4f761ab918aaff4705621bb8559f (patch) | |
tree | 5009a5548c99155e00b4b14d52f50728a337960f /src/decoder_thread.c | |
parent | 10be8a8714b49bec5e6f869975962cbc26cebe61 (diff) | |
download | mpd-000b2d4f3a9c4f761ab918aaff4705621bb8559f.tar.gz mpd-000b2d4f3a9c4f761ab918aaff4705621bb8559f.tar.xz mpd-000b2d4f3a9c4f761ab918aaff4705621bb8559f.zip |
music_pipe: added music_pipe_push()
Added music_pipe_allocate(), music_pipe_push() and
music_pipe_cancel(). Those functions allow the caller (decoder thread
in this case) to do its own chunk management. The functions
music_pipe_flush() and music_pipe_tag() can now be removed.
Diffstat (limited to 'src/decoder_thread.c')
-rw-r--r-- | src/decoder_thread.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/decoder_thread.c b/src/decoder_thread.c index b35683e6e..97e92d295 100644 --- a/src/decoder_thread.c +++ b/src/decoder_thread.c @@ -98,6 +98,7 @@ static void decoder_run_song(const struct song *song, const char *uri) decoder.seeking = false; decoder.stream_tag = NULL; decoder.decoder_tag = NULL; + decoder.chunk = NULL; dc.state = DECODE_STATE_START; dc.command = DECODE_COMMAND_NONE; @@ -194,7 +195,10 @@ static void decoder_run_song(const struct song *song, const char *uri) pcm_convert_deinit(&decoder.conv_state); - music_pipe_flush(); + /* flush the last chunk */ + if (decoder.chunk != NULL && + decoder_flush_chunk(&decoder, NULL) != DECODE_COMMAND_NONE) + music_pipe_cancel(decoder.chunk); if (close_instream) input_stream_close(&input_stream); |