diff options
-rw-r--r-- | src/outputBuffer.c | 7 | ||||
-rw-r--r-- | src/outputBuffer.h | 5 | ||||
-rw-r--r-- | src/playerData.c | 2 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/outputBuffer.c b/src/outputBuffer.c index 97a9e78bd..aee2f832b 100644 --- a/src/outputBuffer.c +++ b/src/outputBuffer.c @@ -21,7 +21,7 @@ #include "utils.h" -void ob_init(unsigned int size) +void ob_init(unsigned int size, Notify *notify) { assert(size > 0); @@ -31,6 +31,7 @@ void ob_init(unsigned int size) ob.begin = 0; ob.end = 0; ob.lazy = 0; + ob.notify = notify; ob.chunks[0].chunkSize = 0; } @@ -61,7 +62,7 @@ static inline unsigned successor(unsigned i) */ static void output_buffer_expand(unsigned i) { - int was_empty = !ob.lazy || ob_is_empty(); + int was_empty = ob.notify != NULL && (!ob.lazy || ob_is_empty()); assert(i == (ob.end + 1) % ob.size); assert(i != ob.end); @@ -72,7 +73,7 @@ static void output_buffer_expand(unsigned i) /* if the buffer was empty, the player thread might be waiting for us; wake it up now that another decoded buffer has become available. */ - notify_signal(&pc.notify); + notify_signal(ob.notify); } void ob_flush(void) diff --git a/src/outputBuffer.h b/src/outputBuffer.h index ebbc0d228..fb3b4302d 100644 --- a/src/outputBuffer.h +++ b/src/outputBuffer.h @@ -19,6 +19,7 @@ #ifndef OUTPUT_BUFFER_H #define OUTPUT_BUFFER_H +#include "notify.h" #include "pcm_utils.h" #define OUTPUT_BUFFER_DC_STOP -1 @@ -55,9 +56,11 @@ typedef struct _OutputBuffer { AudioFormat audioFormat; ConvState convState; + + Notify *notify; } OutputBuffer; -void ob_init(unsigned int size); +void ob_init(unsigned int size, Notify *notify); void ob_free(void); diff --git a/src/playerData.c b/src/playerData.c index f268c85c6..6af3c5955 100644 --- a/src/playerData.c +++ b/src/playerData.c @@ -72,7 +72,7 @@ void initPlayerData(void) buffered_before_play = buffered_chunks; } - ob_init(buffered_chunks); + ob_init(buffered_chunks, &pc.notify); notify_init(&pc.notify); pc.error = PLAYER_ERROR_NOERROR; |