diff options
| author | Steve Bavin <pondlife@pondlife.me> | 2006-10-25 06:19:27 +0000 |
|---|---|---|
| committer | Steve Bavin <pondlife@pondlife.me> | 2006-10-25 06:19:27 +0000 |
| commit | f512558650175b8834d3a2125d4d3d5a3df78606 (patch) | |
| tree | 02ff47f4b554e86eb08e5912b32ae6112eec4076 /apps/playback.c | |
| parent | b26e396436971b73c8a40f50121c404d643daf51 (diff) | |
| download | rockbox-f512558650175b8834d3a2125d4d3d5a3df78606.zip rockbox-f512558650175b8834d3a2125d4d3d5a3df78606.tar.gz rockbox-f512558650175b8834d3a2125d4d3d5a3df78606.tar.bz2 rockbox-f512558650175b8834d3a2125d4d3d5a3df78606.tar.xz | |
Only flush PCM buffered voice data when explicitly told to. Patch by Stephane Doyen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11331 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
| -rw-r--r-- | apps/playback.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/apps/playback.c b/apps/playback.c index ddb6019..db47b0b 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -328,6 +328,14 @@ void mp3_play_stop(void) #endif } +void mp3_play_abort(void) +{ +#ifdef PLAYBACK_VOICE + LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); + queue_post(&voice_queue, Q_VOICE_STOP, (void *)1); +#endif +} + bool mp3_pause_done(void) { return pcm_is_paused(); @@ -952,6 +960,10 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize) case Q_VOICE_STOP: LOGFQUEUE("voice < Q_VOICE_STOP"); + if (ev.data == (void *)1 && !playing && pcm_is_playing()) + /* Aborting: Slight hack - flush PCM buffer if + only being used for voice */ + pcmbuf_play_stop(); if (voice_is_playing) { /* Clear the current buffer */ @@ -980,10 +992,6 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize) LOGFQUEUE("voice < Q_VOICE_PLAY"); if (!voice_is_playing) { - /* Slight hack - flush PCM buffer if only being used for voice */ - if (!playing && pcm_is_playing()) - pcmbuf_play_stop(); - /* Set up new voice data */ struct voice_info *voice_data; voice_is_playing = true; @@ -3018,7 +3026,7 @@ static void audio_play_start(size_t offset) /* Invalidates all but currently playing track. */ -void audio_invalidate_tracks(void) +static void audio_invalidate_tracks(void) { if (audio_have_tracks()) { last_peek_offset = 0; |