From cd8bfeb8a36197080703a21def84eb2da173d23c Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Sun, 17 Jul 2005 15:35:17 +0000 Subject: [PATCH] Fixed the gapless playback. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7180 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index 78ee15fa48..3d7ba1a30a 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1156,10 +1156,12 @@ void audio_update_trackinfo(void) ci.curpos = 0; cur_ti->start_pos = 0; ci.taginfo_ready = (bool *)&cur_ti->taginfo_ready; - if (!pcmbuf_crossfade_init()) - pcmbuf_add_event(codec_track_changed); - else + if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active()) { + pcmbuf_crossfade_init(); codec_track_changed(); + } else { + pcmbuf_add_event(codec_track_changed); + } } static void audio_stop_playback(void) @@ -1343,8 +1345,10 @@ static void initiate_track_change(int peek_index) ci.stop_codec = true; playlist_next(peek_index); queue_post(&audio_queue, AUDIO_PLAY, 0); - } - + } else { + pcmbuf_crossfade_init(); + } + codec_track_changed(); } @@ -1371,7 +1375,8 @@ void audio_thread(void) ci.stop_codec = true; ci.reload_codec = false; ci.seek_time = 0; - pcmbuf_crossfade_init(); + if (!pcmbuf_is_crossfade_active()) + pcmbuf_crossfade_init(); audio_play_start((int)ev.data); playlist_update_resume_info(audio_current_track()); break ;