From c1cd2668b24aba8bb3d83554b800a0b16f57002b Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Wed, 19 May 2004 03:23:31 +0000
Subject: [PATCH] bug fixy poo s/1/0/ and mark in decoderControl if we are
 seekable

git-svn-id: https://svn.musicpd.org/mpd/trunk@1078 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/decode.c     | 4 ++--
 src/decode.h     | 1 +
 src/mp3_decode.c | 2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/decode.c b/src/decode.c
index f77a9b999..69037d007 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -114,7 +114,7 @@ int calculateCrossFadeChunks(PlayerControl * pc, AudioFormat * af) {
 
 #define handleDecodeStart() \
         if(decodeWaitedOn && dc->state==DECODE_STATE_DECODE) { \
-                decodeWaitedOn = 1; \
+                decodeWaitedOn = 0; \
 	        if(openAudioDevice(&(cb->audioFormat))<0) { \
 		        strncpy(pc->erroredFile,pc->file,MAXPATHLEN); \
 		        pc->erroredFile[MAXPATHLEN] = '\0'; \
@@ -127,7 +127,7 @@ int calculateCrossFadeChunks(PlayerControl * pc, AudioFormat * af) {
 	        pc->bits = dc->audioFormat.bits; \
 	        pc->channels = dc->audioFormat.channels; \
         } \
-        else { \
+        else if(decodeWaitedOn) { \
                 my_usleep(10); \
                 continue; \
         }
diff --git a/src/decode.h b/src/decode.h
index 8b36fe7ca..d73cb587c 100644
--- a/src/decode.h
+++ b/src/decode.h
@@ -46,6 +46,7 @@
 #define DECODE_SUFFIX_WAVE      6
 
 typedef struct _DecoderControl {
+	volatile mpd_sint8 seekable;
 	volatile mpd_sint8 state;
 	volatile mpd_sint8 stop;
 	volatile mpd_sint8 start;
diff --git a/src/mp3_decode.c b/src/mp3_decode.c
index 7ff63b536..23bed6bac 100644
--- a/src/mp3_decode.c
+++ b/src/mp3_decode.c
@@ -189,7 +189,7 @@ int fillMp3InputBuffer(mp3DecodeData * data) {
 			readSize);
 	if(readed <= 0 && inputStreamAtEOF(data->inStream)) return -1;
 	/* sleep for a fraction of a second! */
-	else if(readed == 0) my_usleep(10);
+	else if(readed <= 0) my_usleep(10000);
 
 	mad_stream_buffer(&data->stream,data->readBuffer,readed+remaining);
 	(data->stream).error = 0;