1
0
Fork 0
forked from len0rd/rockbox

Fix FS#10745 - %mv not working in sbs...

This fix is as good as we can do, but not perfect. Because the sbs is only updated when a button is pressed it will stay in the "volume changing" state probalby longer than expected.. which isnt terrible, but useful to remember.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23455 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2009-11-01 02:36:51 +00:00
parent bf751924dc
commit 235d1ae795
8 changed files with 8 additions and 7 deletions

View file

@ -564,6 +564,9 @@ bool option_screen(const struct settings_list *setting,
/* callback */ /* callback */
if ( function ) if ( function )
function(*variable); function(*variable);
/* if the volume is changing we need to let the skins know */
if (function == sound_get_fn(SOUND_VOLUME))
global_status.last_volume_change = current_tick;
} }
return false; return false;
} }

View file

@ -1632,7 +1632,6 @@ void skin_data_reset(struct wps_data *wps_data)
#endif #endif
wps_data->tokens = NULL; wps_data->tokens = NULL;
wps_data->num_tokens = 0; wps_data->num_tokens = 0;
wps_data->button_time_volume = 0;
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
wps_data->peak_meter_enabled = false; wps_data->peak_meter_enabled = false;

View file

@ -818,8 +818,8 @@ const char *get_token_value(struct gui_wps *gwps,
return NULL; return NULL;
#endif #endif
case WPS_TOKEN_BUTTON_VOLUME: case WPS_TOKEN_BUTTON_VOLUME:
if (data->button_time_volume && if (global_status.last_volume_change &&
TIME_BEFORE(current_tick, data->button_time_volume + TIME_BEFORE(current_tick, global_status.last_volume_change +
token->value.i * TIMEOUT_UNIT)) token->value.i * TIMEOUT_UNIT))
return "v"; return "v";
return NULL; return NULL;

View file

@ -264,8 +264,6 @@ struct wps_data
/* Total number of tokens in the WPS. During WPS parsing, this is /* Total number of tokens in the WPS. During WPS parsing, this is
the index of the token being parsed. */ the index of the token being parsed. */
int num_tokens; int num_tokens;
/* tick the volume button was last pressed */
unsigned int button_time_volume;
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
bool peak_meter_enabled; bool peak_meter_enabled;

View file

@ -1130,8 +1130,6 @@ long gui_wps_show(void)
if (vol_changed) if (vol_changed)
{ {
FOR_NB_SCREENS(i)
gui_wps[i].data->button_time_volume = current_tick;
bool res = false; bool res = false;
setvol(); setvol();
FOR_NB_SCREENS(i) FOR_NB_SCREENS(i)

View file

@ -158,6 +158,7 @@ static void app_main(void)
} }
#endif /* #ifdef AUTOROCK */ #endif /* #ifdef AUTOROCK */
global_status.last_volume_change = 0;
root_menu(); root_menu();
} }

View file

@ -739,6 +739,7 @@ void setvol(void)
if (global_settings.volume > max_vol) if (global_settings.volume > max_vol)
global_settings.volume = max_vol; global_settings.volume = max_vol;
sound_set_volume(global_settings.volume); sound_set_volume(global_settings.volume);
global_status.last_volume_change = current_tick;
settings_save(); settings_save();
} }

View file

@ -308,6 +308,7 @@ struct system_status
#endif #endif
signed char last_screen; signed char last_screen;
int viewer_icon_count; int viewer_icon_count;
int last_volume_change; /* tick the last volume change happened. skins use this */
}; };
struct user_settings struct user_settings