forked from len0rd/rockbox
settings_list add F_CB_ONLY_IF_CHANGED for settings
Recently I added F_CB_ON_SELECT_ONLY_IF_CHANGED in conjunction with the shuffle and repeat settings instead it makes more sense to make F_CB_ONLY_IF_CHANGED and apply to all callbacks (F_CB_ON_SELECT_ONLY or on_exit) Change-Id: I4376557d479aceb419f7b4b4e0998afc249c87ec
This commit is contained in:
parent
e60ade1fbc
commit
873f49b1f0
3 changed files with 10 additions and 8 deletions
|
|
@ -472,7 +472,7 @@ bool option_screen(const struct settings_list *setting,
|
||||||
bool cb_on_select_only =
|
bool cb_on_select_only =
|
||||||
((setting->flags & F_CB_ON_SELECT_ONLY) == F_CB_ON_SELECT_ONLY);
|
((setting->flags & F_CB_ON_SELECT_ONLY) == F_CB_ON_SELECT_ONLY);
|
||||||
bool cb_on_changed =
|
bool cb_on_changed =
|
||||||
((setting->flags & F_CB_ON_SELECT_ONLY_IF_CHANGED) == F_CB_ON_SELECT_ONLY_IF_CHANGED);
|
((setting->flags & F_CB_ONLY_IF_CHANGED) == F_CB_ONLY_IF_CHANGED);
|
||||||
|
|
||||||
int var_type = setting->flags&F_T_MASK;
|
int var_type = setting->flags&F_T_MASK;
|
||||||
void (*function)(int) = NULL;
|
void (*function)(int) = NULL;
|
||||||
|
|
@ -578,8 +578,10 @@ bool option_screen(const struct settings_list *setting,
|
||||||
}
|
}
|
||||||
/* callback */
|
/* callback */
|
||||||
if (function && !cb_on_select_only)
|
if (function && !cb_on_select_only)
|
||||||
function(*variable);
|
{
|
||||||
|
if (!cb_on_changed || (*variable != oldvalue))
|
||||||
|
function(*variable);
|
||||||
|
}
|
||||||
/* if the volume is changing we need to let the skins know */
|
/* if the volume is changing we need to let the skins know */
|
||||||
if (function == sound_get_fn(SOUND_VOLUME))
|
if (function == sound_get_fn(SOUND_VOLUME))
|
||||||
global_status.last_volume_change = current_tick;
|
global_status.last_volume_change = current_tick;
|
||||||
|
|
|
||||||
|
|
@ -929,15 +929,15 @@ const struct settings_list settings[] = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* playback */
|
/* playback */
|
||||||
OFFON_SETTING(F_CB_ON_SELECT_ONLY_IF_CHANGED, playlist_shuffle, LANG_SHUFFLE,
|
OFFON_SETTING(F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, playlist_shuffle,
|
||||||
false, "shuffle", shuffle_playlist_callback),
|
LANG_SHUFFLE, false, "shuffle", shuffle_playlist_callback),
|
||||||
|
|
||||||
SYSTEM_SETTING(NVRAM(4), resume_index, -1),
|
SYSTEM_SETTING(NVRAM(4), resume_index, -1),
|
||||||
SYSTEM_SETTING(NVRAM(4), resume_crc32, -1),
|
SYSTEM_SETTING(NVRAM(4), resume_crc32, -1),
|
||||||
SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1),
|
SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1),
|
||||||
SYSTEM_SETTING(NVRAM(4), resume_offset, -1),
|
SYSTEM_SETTING(NVRAM(4), resume_offset, -1),
|
||||||
CHOICE_SETTING(F_CB_ON_SELECT_ONLY_IF_CHANGED, repeat_mode, LANG_REPEAT,
|
CHOICE_SETTING(F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, repeat_mode,
|
||||||
REPEAT_OFF, "repeat", "off,all,one,shuffle"
|
LANG_REPEAT, REPEAT_OFF, "repeat", "off,all,one,shuffle"
|
||||||
#ifdef AB_REPEAT_ENABLE
|
#ifdef AB_REPEAT_ENABLE
|
||||||
",ab"
|
",ab"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ struct table_setting {
|
||||||
#define F_TABLE_SETTING 0x2000
|
#define F_TABLE_SETTING 0x2000
|
||||||
#define F_ALLOW_ARBITRARY_VALS 0x4000
|
#define F_ALLOW_ARBITRARY_VALS 0x4000
|
||||||
#define F_CB_ON_SELECT_ONLY 0x20000
|
#define F_CB_ON_SELECT_ONLY 0x20000
|
||||||
#define F_CB_ON_SELECT_ONLY_IF_CHANGED (F_CB_ON_SELECT_ONLY|F_TEMPVAR)
|
#define F_CB_ONLY_IF_CHANGED 0x40000
|
||||||
/* these use the _isfunc_type type for the function */
|
/* these use the _isfunc_type type for the function */
|
||||||
/* typedef int (*_isfunc_type)(void); */
|
/* typedef int (*_isfunc_type)(void); */
|
||||||
#define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */
|
#define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue