Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 18043) +++ apps/lang/english.lang (working copy) @@ -11834,4 +11834,18 @@ *: "Skip Track" + + id: LANG_FFRW_LIMIT + desc: in settings_menu + user: + + *: "FF/RW Speed Limit" + + + *: "FF/RW Speed Limit" + + + *: "Speed Limit" + + Index: apps/gui/gwps-common.c =================================================================== --- apps/gui/gwps-common.c (revision 18043) +++ apps/gui/gwps-common.c (working copy) @@ -231,10 +231,9 @@ max_step = (wps_state.id3->elapsed + ff_rewind_count) * FF_REWIND_MAX_PERCENT / 100; } - max_step = MAX(max_step, MIN_FF_REWIND_STEP); - if (step > max_step) + if (step > max_step && global_settings.ff_rewind_limit) step = max_step; ff_rewind_count += step * direction; Index: apps/settings.h =================================================================== --- apps/settings.h (revision 18043) +++ apps/settings.h (working copy) @@ -448,6 +448,7 @@ bool play_selected; /* Plays selected file even in shuffle mode */ int ff_rewind_min_step; /* FF/Rewind minimum step size */ int ff_rewind_accel; /* FF/Rewind acceleration (in seconds per doubling) */ + bool ff_rewind_limit; /* FF/Rewind: whether to limit step at track ends */ #ifndef HAVE_FLASH_STORAGE int disk_spindown; /* time until disk spindown, in seconds (0=off) */ Index: apps/menus/playback_menu.c =================================================================== --- apps/menus/playback_menu.c (revision 18043) +++ apps/menus/playback_menu.c (working copy) @@ -64,10 +64,11 @@ MENUITEM_SETTING(repeat_mode, &global_settings.repeat_mode, playback_callback); MENUITEM_SETTING(play_selected, &global_settings.play_selected, NULL); +MENUITEM_SETTING(ff_rewind_limit, &global_settings.ff_rewind_limit, NULL); MENUITEM_SETTING(ff_rewind_accel, &global_settings.ff_rewind_accel, NULL); MENUITEM_SETTING(ff_rewind_min_step, &global_settings.ff_rewind_min_step, NULL); MAKE_MENU(ff_rewind_settings_menu, ID2P(LANG_WIND_MENU), 0, Icon_NOICON, - &ff_rewind_min_step, &ff_rewind_accel); + &ff_rewind_min_step, &ff_rewind_accel, &ff_rewind_limit); #ifndef HAVE_FLASH_STORAGE #if CONFIG_CODEC == SWCODEC static int buffermargin_callback(int action,const struct menu_item_ex *this_item) Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (revision 18043) +++ apps/settings_list.c (working copy) @@ -691,6 +691,7 @@ "seek acceleration", "very fast,fast,normal,slow,very slow", NULL, 5, ID2P(LANG_VERY_FAST), ID2P(LANG_FAST), ID2P(LANG_NORMAL), ID2P(LANG_SLOW) , ID2P(LANG_VERY_SLOW)), + OFFON_SETTING(0,ff_rewind_limit,LANG_FFRW_LIMIT,true,"seek speed limit",NULL), #if (CONFIG_CODEC == SWCODEC) && !defined(HAVE_FLASH_STORAGE) STRINGCHOICE_SETTING(0, buffer_margin, LANG_MP3BUFFER_MARGIN, 0,"antiskip", "5s,15s,30s,1min,2min,3min,5min,10min", NULL, 8,