decoder_control: pass music_pipe to dc_start()
More abstraction for decoder_control.pipe.
This commit is contained in:
parent
5223261f19
commit
cc261872c2
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "decoder_control.h"
|
||||
#include "pipe.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@ -58,22 +59,28 @@ static void dc_command_async(enum decoder_command cmd)
|
||||
}
|
||||
|
||||
void
|
||||
dc_start(struct notify *notify, struct song *song)
|
||||
dc_start(struct notify *notify, struct song *song, struct music_pipe *pipe)
|
||||
{
|
||||
assert(dc.pipe != NULL);
|
||||
assert(dc.pipe == NULL);
|
||||
assert(song != NULL);
|
||||
assert(pipe != NULL);
|
||||
assert(music_pipe_empty(pipe));
|
||||
|
||||
dc.next_song = song;
|
||||
dc.pipe = pipe;
|
||||
dc_command(notify, DECODE_COMMAND_START);
|
||||
}
|
||||
|
||||
void
|
||||
dc_start_async(struct song *song)
|
||||
dc_start_async(struct song *song, struct music_pipe *pipe)
|
||||
{
|
||||
assert(dc.pipe != NULL);
|
||||
assert(dc.pipe == NULL);
|
||||
assert(song != NULL);
|
||||
assert(pipe != NULL);
|
||||
assert(music_pipe_empty(pipe));
|
||||
|
||||
dc.next_song = song;
|
||||
dc.pipe = pipe;
|
||||
dc_command_async(DECODE_COMMAND_START);
|
||||
}
|
||||
|
||||
|
@ -118,10 +118,10 @@ void
|
||||
dc_command_wait(struct notify *notify);
|
||||
|
||||
void
|
||||
dc_start(struct notify *notify, struct song *song);
|
||||
dc_start(struct notify *notify, struct song *song, struct music_pipe *pipe);
|
||||
|
||||
void
|
||||
dc_start_async(struct song *song);
|
||||
dc_start_async(struct song *song, struct music_pipe *pipe);
|
||||
|
||||
void
|
||||
dc_stop(struct notify *notify);
|
||||
|
@ -324,10 +324,9 @@ static bool player_seek_decoder(struct player *player)
|
||||
/* clear music chunks which might still reside in the
|
||||
pipe */
|
||||
music_pipe_clear(player->pipe, player_buffer);
|
||||
dc.pipe = player->pipe;
|
||||
|
||||
/* re-start the decoder */
|
||||
dc_start_async(pc.next_song);
|
||||
dc_start_async(pc.next_song, player->pipe);
|
||||
ret = player_wait_for_decoder(player);
|
||||
if (!ret) {
|
||||
/* decoder failure */
|
||||
@ -665,8 +664,7 @@ static void do_play(void)
|
||||
player.pipe = music_pipe_new();
|
||||
|
||||
dc.buffer = player_buffer;
|
||||
dc.pipe = player.pipe;
|
||||
dc_start(&pc.notify, pc.next_song);
|
||||
dc_start(&pc.notify, pc.next_song, player.pipe);
|
||||
if (!player_wait_for_decoder(&player)) {
|
||||
player_dc_stop(&player);
|
||||
player_command_finished();
|
||||
@ -735,9 +733,10 @@ static void do_play(void)
|
||||
assert(pc.next_song != NULL);
|
||||
assert(!player_dc_at_next_song(&player));
|
||||
|
||||
dc.pipe = NULL;
|
||||
|
||||
player.queued = false;
|
||||
dc.pipe = music_pipe_new();
|
||||
dc_start_async(pc.next_song);
|
||||
dc_start_async(pc.next_song, music_pipe_new());
|
||||
}
|
||||
|
||||
if (player_dc_at_next_song(&player) &&
|
||||
|
Loading…
Reference in New Issue
Block a user