summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/pcm_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/mpegplayer/pcm_output.c')
-rw-r--r--apps/plugins/mpegplayer/pcm_output.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/apps/plugins/mpegplayer/pcm_output.c b/apps/plugins/mpegplayer/pcm_output.c
index 281f7ddb72..ac89308af1 100644
--- a/apps/plugins/mpegplayer/pcm_output.c
+++ b/apps/plugins/mpegplayer/pcm_output.c
@@ -152,12 +152,25 @@ void pcm_output_add_data(void)
152/* Flushes the buffer - clock keeps counting */ 152/* Flushes the buffer - clock keeps counting */
153void pcm_output_flush(void) 153void pcm_output_flush(void)
154{ 154{
155 bool playing, paused;
156
155 rb->pcm_play_lock(); 157 rb->pcm_play_lock();
156 158
159 playing = rb->pcm_is_playing();
160 paused = rb->pcm_is_paused();
161
162 /* Stop PCM to clear current buffer */
163 if (playing)
164 rb->pcm_play_stop();
165
157 pcmbuf_threshold = PCMOUT_PLAY_WM; 166 pcmbuf_threshold = PCMOUT_PLAY_WM;
158 pcmbuf_read = pcmbuf_written = 0; 167 pcmbuf_read = pcmbuf_written = 0;
159 pcmbuf_head = pcmbuf_tail = pcm_buffer; 168 pcmbuf_head = pcmbuf_tail = pcm_buffer;
160 169
170 /* Restart if playing state was current */
171 if (playing && !paused)
172 rb->pcm_play_data(get_more, NULL, 0);
173
161 rb->pcm_play_unlock(); 174 rb->pcm_play_unlock();
162} 175}
163 176