Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang (revision 18705)
+++ apps/lang/english.lang (working copy)
@@ -12058,3 +12058,46 @@
albumart: ""
+
+ id: LANG_REWIND_ON_FADE
+ desc: options menu to set rewind on fade
+ user:
+
+ *: "Rewind on Fade"
+
+
+ *: "Rewind on Fade"
+
+
+ *: "Rewind on Fade"
+
+
+
+ id: LANG_FADE_REWIND_AMOUNT
+ desc: options menu to set rewind on fade amount
+ user:
+
+ *: "Rewind on Fade Amount"
+
+
+ *: "Rewind on Fade Amount"
+
+
+ *: "Rewind on Fade Amount"
+
+
+
+ id: LANG_FADE_MENU
+ desc: in the playback sub menu
+ user:
+
+ *: "Fade on Stop"
+
+
+ *: "Fade on Stop"
+
+
+ *: "Fade on Stop"
+
+
+
Index: apps/gui/gwps-common.c
===================================================================
--- apps/gui/gwps-common.c (revision 18705)
+++ apps/gui/gwps-common.c (working copy)
@@ -99,6 +99,15 @@
/* zero out the sound */
sound_set_volume(fp_min_vol >> 8);
+ if (global_settings.rewind_on_fade) {
+ if (audio_current_track()->elapsed >
+ (unsigned long)(global_settings.fade_rew*1000))
+ audio_ff_rewind(audio_current_track()->elapsed -
+ (global_settings.fade_rew*1000));
+ else
+ audio_ff_rewind(100);
+ }
+
sleep(HZ/10); /* let audio thread run */
audio_resume();
Index: apps/settings.h
===================================================================
--- apps/settings.h (revision 18705)
+++ apps/settings.h (working copy)
@@ -509,6 +509,8 @@
int jump_scroll_delay; /* Delay between jump scroll screens */
#endif
bool fade_on_stop; /* fade on pause/unpause/stop */
+ bool rewind_on_fade; /* 0=no 1=yes */
+ int fade_rew; /* time in seconds to rewind when unpausing */
bool caption_backlight; /* turn on backlight at end and start of track */
#if CONFIG_TUNER
Index: apps/menus/playback_menu.c
===================================================================
--- apps/menus/playback_menu.c (revision 18705)
+++ apps/menus/playback_menu.c (working copy)
@@ -87,6 +87,10 @@
buffermargin_callback);
#endif /*HAVE_FLASH_STORAGE */
MENUITEM_SETTING(fade_on_stop, &global_settings.fade_on_stop, NULL);
+MENUITEM_SETTING(rewind_on_fade, &global_settings.rewind_on_fade, NULL);
+MENUITEM_SETTING(fade_rew, &global_settings.fade_rew, NULL);
+MAKE_MENU(fade_on_stop_settings_menu,ID2P(LANG_FADE_MENU),0, Icon_NOICON,
+ &fade_on_stop, &rewind_on_fade, &fade_rew);
MENUITEM_SETTING(party_mode, &global_settings.party_mode, NULL);
#if CONFIG_CODEC == SWCODEC
@@ -184,7 +188,7 @@
#ifndef HAVE_FLASH_STORAGE
&buffer_margin,
#endif
- &fade_on_stop, &party_mode,
+ &fade_on_stop_settings_menu, &party_mode,
#if CONFIG_CODEC == SWCODEC
&crossfade_settings_menu, &replaygain_settings_menu, &beep,
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c (revision 18705)
+++ apps/settings_list.c (working copy)
@@ -688,6 +688,10 @@
OFFON_SETTING(0,play_selected,LANG_PLAY_SELECTED,true,"play selected",NULL),
OFFON_SETTING(0,party_mode,LANG_PARTY_MODE,false,"party mode",NULL),
OFFON_SETTING(0,fade_on_stop,LANG_FADE_ON_STOP,true,"volume fade",NULL),
+ OFFON_SETTING(0,rewind_on_fade,LANG_REWIND_ON_FADE,false,
+ "rewind on fade",NULL),
+ INT_SETTING(0,fade_rew,LANG_FADE_REWIND_AMOUNT,2,
+ "rew on fade amount",UNIT_SEC,0,15,1,NULL,NULL,NULL),
TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, ff_rewind_min_step,
LANG_FFRW_STEP, 1, "scan min step", NULL, UNIT_SEC,
NULL, NULL, NULL, 14, 1,2,3,4,5,6,8,10,15,20,25,30,45,60),