diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2008-01-07 14:58:23 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2008-01-07 14:58:23 +0000 |
commit | 0e98d7e315bcbdee35bcda4fd01a82da9185ed93 (patch) | |
tree | 937e05e7d7028706075adb27d4a8665163298e55 /apps/plugins/mpegplayer/pcm_output.c | |
parent | 9216d0f16a6c0c51bdae4fbfe9351d02beb1110c (diff) | |
download | rockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.tar.gz rockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.zip |
mpegplayer: Misc seeking tweaks 1) Consolidate some code amongst functions. 2) Be sure times retured from stream_get_seek_time are never before the start of the movie 3) Stop PCM when clearing it so the current audio being sent to the audio device is also cleared.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16014 a1c6a512-1295-4272-9138-f99709370657
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 | ||