diff options
author | Max Kellermann <max@duempel.org> | 2008-10-12 01:21:35 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-12 01:21:35 +0200 |
commit | 08210af23a5d33cb08efcfd5710e65887ab8e398 (patch) | |
tree | a91acb5a9d9b6c4ad0bbfe20752811d46d72ddc5 | |
parent | 80a2c937c42a0d0309fcfc961988b77012deb7ea (diff) | |
download | mpd-08210af23a5d33cb08efcfd5710e65887ab8e398.tar.gz mpd-08210af23a5d33cb08efcfd5710e65887ab8e398.tar.xz mpd-08210af23a5d33cb08efcfd5710e65887ab8e398.zip |
player: replaced buffered_before_play with buffering flag
buffered_before_play was copied to struct player because it was used
to disable buffering when seeking. Instead of mainaining a copy of
this number, move just the flag to the player struct.
-rw-r--r-- | src/player_thread.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/player_thread.c b/src/player_thread.c index 10b9a8769..b55fba338 100644 --- a/src/player_thread.c +++ b/src/player_thread.c @@ -35,10 +35,9 @@ enum xfade_state { struct player { /** - * number of chunks which have to be decoded before playing - * starts + * are we waiting for buffered_before_play? */ - unsigned int buffered_before_play; + bool buffering; /** * true if the decoder is starting and did not provide data @@ -178,7 +177,10 @@ static void processDecodeInput(struct player *player) dropBufferedAudio(); if (decodeSeek(player) == 0) { player->xfade = XFADE_UNKNOWN; - player->buffered_before_play = 0; + + /* abort buffering when the user has requested + a seek */ + player->buffering = false; } break; @@ -225,14 +227,13 @@ static int playChunk(ob_chunk * chunk, static void do_play(void) { struct player player = { - .buffered_before_play = pc.buffered_before_play, + .buffering = true, .decoder_starting = false, .paused = false, .queued = false, .xfade = XFADE_UNKNOWN, .next_song_chunk = -1, }; - int buffering = 1; unsigned int crossFadeChunks = 0; /** the position of the next cross-faded chunk in the next song */ @@ -262,14 +263,14 @@ static void do_play(void) break; } - if (buffering) { - if (ob_available() < player.buffered_before_play) { + if (player.buffering) { + if (ob_available() < pc.buffered_before_play) { /* not enough decoded buffer space yet */ notify_wait(&pc.notify); continue; } else { /* buffering is complete */ - buffering = 0; + player.buffering = false; ob_set_lazy(true); } } |