summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/pcm_output.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-01-07 14:58:23 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-01-07 14:58:23 +0000
commit0e98d7e315bcbdee35bcda4fd01a82da9185ed93 (patch)
tree937e05e7d7028706075adb27d4a8665163298e55 /apps/plugins/mpegplayer/pcm_output.c
parent9216d0f16a6c0c51bdae4fbfe9351d02beb1110c (diff)
downloadrockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.zip
rockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.tar.gz
rockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.tar.bz2
rockbox-0e98d7e315bcbdee35bcda4fd01a82da9185ed93.tar.xz
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.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 281f7dd..ac89308 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)
/* Flushes the buffer - clock keeps counting */
void pcm_output_flush(void)
{
+ bool playing, paused;
+
rb->pcm_play_lock();
+ playing = rb->pcm_is_playing();
+ paused = rb->pcm_is_paused();
+
+ /* Stop PCM to clear current buffer */
+ if (playing)
+ rb->pcm_play_stop();
+
pcmbuf_threshold = PCMOUT_PLAY_WM;
pcmbuf_read = pcmbuf_written = 0;
pcmbuf_head = pcmbuf_tail = pcm_buffer;
+ /* Restart if playing state was current */
+ if (playing && !paused)
+ rb->pcm_play_data(get_more, NULL, 0);
+
rb->pcm_play_unlock();
}