aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/outputBuffer.c7
-rw-r--r--src/outputBuffer.h5
-rw-r--r--src/playerData.c2
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;