From 3bceded79373a43ee75487a5bd037723c92e089b Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Tue, 19 Dec 2006 01:26:37 +0000 Subject: Accept FS#5344 by Mike Schmitt. Add a "shuffle and track skip" option to crossfade. Bumps config versino, so SAVE SETTINGS before updating. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11811 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'apps/playback.c') diff --git a/apps/playback.c b/apps/playback.c index f2e029ba30..53dbe07823 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1819,10 +1819,27 @@ static void codec_track_skip_done(bool was_manual) } /* Automatic track change w/crossfade, if not in "Track Skip Only" mode. */ else if (pcmbuf_is_crossfade_enabled() && !pcmbuf_is_crossfade_active() - && global_settings.crossfade != 2) + && global_settings.crossfade != CROSSFADE_ENABLE_TRACKSKIP ) { - pcmbuf_crossfade_init(false); - codec_track_changed(); + if ( global_settings.crossfade + == CROSSFADE_ENABLE_SHUFFLE_AND_TRACKSKIP ) + { + if (global_settings.playlist_shuffle) /* shuffle mode is on, so crossfade: */ + { + pcmbuf_crossfade_init(false); + codec_track_changed(); + } + else /* shuffle mode is off, so do a gapless track change */ + { + pcmbuf_set_position_callback(codec_pcmbuf_position_callback); /* Gapless playback */ + pcmbuf_set_event_handler(codec_pcmbuf_track_changed_callback); /* copied from below */ + } + } + else /* normal crossfade: */ + { + pcmbuf_crossfade_init(false); + codec_track_changed(); + } } /* Gapless playback. */ else -- cgit v1.2.3