moved the initial buffering code into the big loop
Eliminating some duplicated and. This also decreases the number of lines calling processDecodeInput(). git-svn-id: https://svn.musicpd.org/mpd/trunk@7260 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
aaebd9ef2b
commit
b89b019723
23
src/decode.c
23
src/decode.c
@ -365,6 +365,7 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer *
|
||||
{
|
||||
int pause = 0;
|
||||
int quit = 0;
|
||||
int buffering = 1;
|
||||
unsigned int bbp = buffered_before_play;
|
||||
/** cross fading enabled for the current song? 0=must check;
|
||||
1=enabled; -1=disabled */
|
||||
@ -390,8 +391,7 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer *
|
||||
pc->play = 0;
|
||||
wakeup_main_task();
|
||||
|
||||
while (availableOutputBuffer(cb) < bbp &&
|
||||
dc->state != DECODE_STATE_STOP) {
|
||||
while (!quit) {
|
||||
processDecodeInput(pc, dc, cb,
|
||||
&pause, &bbp, &doCrossFade,
|
||||
&nextChunk, &decodeWaitedOn, &next);
|
||||
@ -401,17 +401,14 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer *
|
||||
return;
|
||||
}
|
||||
|
||||
player_sleep();
|
||||
}
|
||||
|
||||
while (!quit) {
|
||||
processDecodeInput(pc, dc, cb,
|
||||
&pause, &bbp, &doCrossFade,
|
||||
&nextChunk, &decodeWaitedOn, &next);
|
||||
if (pc->stop) {
|
||||
dropBufferedAudio();
|
||||
quitDecode(pc,dc);
|
||||
return;
|
||||
if (buffering) {
|
||||
if (availableOutputBuffer(cb) < bbp) {
|
||||
/* not enough decoded buffer space yet */
|
||||
player_sleep();
|
||||
continue;
|
||||
} else
|
||||
/* buffering is complete */
|
||||
buffering = 0;
|
||||
}
|
||||
|
||||
if (decodeWaitedOn) {
|
||||
|
Loading…
Reference in New Issue
Block a user