summaryrefslogtreecommitdiff
path: root/apps/pcmbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/pcmbuf.c')
-rw-r--r--apps/pcmbuf.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c
index 7e6954c280..a6b82baf25 100644
--- a/apps/pcmbuf.c
+++ b/apps/pcmbuf.c
@@ -24,7 +24,7 @@
24#include "panic.h" 24#include "panic.h"
25#include <kernel.h> 25#include <kernel.h>
26#include "pcmbuf.h" 26#include "pcmbuf.h"
27#include "pcm_playback.h" 27#include "pcm.h"
28#include "logf.h" 28#include "logf.h"
29#ifndef SIMULATOR 29#ifndef SIMULATOR
30#include "cpu.h" 30#include "cpu.h"
@@ -154,7 +154,6 @@ static void pcmbuf_callback(unsigned char** start, size_t* size)
154 crossfade_chunk = pcmbuf_read; 154 crossfade_chunk = pcmbuf_read;
155 } 155 }
156 156
157process_new_buffer:
158 { 157 {
159 /* Send the new buffer to the pcm */ 158 /* Send the new buffer to the pcm */
160 struct pcmbufdesc *pcmbuf_new = pcmbuf_read; 159 struct pcmbufdesc *pcmbuf_new = pcmbuf_read;
@@ -171,10 +170,6 @@ process_new_buffer:
171 } 170 }
172 else 171 else
173 { 172 {
174 /* There may be more data waiting to flush, try to use it */
175 if (pcmbuf_flush_fillpos())
176 goto process_new_buffer;
177
178 /* No more buffers */ 173 /* No more buffers */
179 last_chunksize = 0; 174 last_chunksize = 0;
180 *realsize = 0; 175 *realsize = 0;
@@ -487,7 +482,12 @@ void pcmbuf_pause(bool pause)
487 if (pause) 482 if (pause)
488 pcm_mute(true); 483 pcm_mute(true);
489#endif 484#endif
490 pcm_play_pause(!pause); 485
486 if (pcm_is_playing())
487 pcm_play_pause(!pause);
488 else if (!pause)
489 pcmbuf_play_start();
490
491#ifdef PCMBUF_MUTING 491#ifdef PCMBUF_MUTING
492 if (!pause) 492 if (!pause)
493 pcm_mute(false); 493 pcm_mute(false);
@@ -823,7 +823,8 @@ static bool prepare_insert(size_t length)
823#endif 823#endif
824 { 824 {
825 logf("pcm starting"); 825 logf("pcm starting");
826 pcmbuf_play_start(); 826 if (!(audio_status() & AUDIO_STATUS_PAUSE))
827 pcmbuf_play_start();
827 } 828 }
828 } 829 }
829 else if (pcmbuf_unplayed_bytes <= pcmbuf_watermark) 830 else if (pcmbuf_unplayed_bytes <= pcmbuf_watermark)