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:
Max Kellermann 2008-04-12 04:12:31 +00:00 committed by Eric Wong
parent aaebd9ef2b
commit b89b019723

View File

@ -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) {