From 8e8e2627b27b28a855881db09f2c16bfb2193050 Mon Sep 17 00:00:00 2001 From: Michael Chicoine Date: Wed, 6 Jan 2010 14:48:42 +0000 Subject: FS#10856 - Skip to previous track inconsistent when using cuesheet git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24191 a1c6a512-1295-4272-9138-f99709370657 --- apps/cuesheet.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'apps/cuesheet.c') diff --git a/apps/cuesheet.c b/apps/cuesheet.c index 7c631c72c8..ef1eff8a85 100644 --- a/apps/cuesheet.c +++ b/apps/cuesheet.c @@ -39,6 +39,7 @@ #include "plugin.h" #include "playback.h" #include "cuesheet.h" +#include "gui/wps.h" #define CUE_DIR ROCKBOX_DIR "/cue" @@ -328,7 +329,18 @@ bool curr_cuesheet_skip(struct cuesheet *cue, int direction, unsigned long curr_ else { if (!(direction <= 0 && track == 0)) - track += direction; + { + /* If skipping forward, skip to next cuesheet segment. If skipping + backward before DEFAULT_SKIP_TRESH milliseconds have elapsed, skip + to previous cuesheet segment. If skipping backward after + DEFAULT_SKIP_TRESH seconds have elapsed, skip to the start of the + current cuesheet segment */ + if (direction == 1 || + ((curr_pos - cue->tracks[track].offset) < DEFAULT_SKIP_TRESH)) + { + track += direction; + } + } seek(cue->tracks[track].offset); return true; -- cgit