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),