diff options
Diffstat (limited to 'apps/plugins/mpegplayer/pcm_output.c')
-rw-r--r-- | apps/plugins/mpegplayer/pcm_output.c | 13 |
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 */ |
153 | void pcm_output_flush(void) | 153 | void 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 | ||