diff options
-rw-r--r-- | apps/gui/option_select.c | 8 | ||||
-rw-r--r-- | apps/settings_list.c | 8 | ||||
-rw-r--r-- | apps/settings_list.h | 2 |
3 files changed, 10 insertions, 8 deletions
diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index d7f27f64eb..da6c703f40 100644 --- a/apps/gui/option_select.c +++ b/apps/gui/option_select.c | |||
@@ -472,7 +472,7 @@ bool option_screen(const struct settings_list *setting, | |||
472 | bool cb_on_select_only = | 472 | bool cb_on_select_only = |
473 | ((setting->flags & F_CB_ON_SELECT_ONLY) == F_CB_ON_SELECT_ONLY); | 473 | ((setting->flags & F_CB_ON_SELECT_ONLY) == F_CB_ON_SELECT_ONLY); |
474 | bool cb_on_changed = | 474 | bool cb_on_changed = |
475 | ((setting->flags & F_CB_ON_SELECT_ONLY_IF_CHANGED) == F_CB_ON_SELECT_ONLY_IF_CHANGED); | 475 | ((setting->flags & F_CB_ONLY_IF_CHANGED) == F_CB_ONLY_IF_CHANGED); |
476 | 476 | ||
477 | int var_type = setting->flags&F_T_MASK; | 477 | int var_type = setting->flags&F_T_MASK; |
478 | void (*function)(int) = NULL; | 478 | void (*function)(int) = NULL; |
@@ -578,8 +578,10 @@ bool option_screen(const struct settings_list *setting, | |||
578 | } | 578 | } |
579 | /* callback */ | 579 | /* callback */ |
580 | if (function && !cb_on_select_only) | 580 | if (function && !cb_on_select_only) |
581 | function(*variable); | 581 | { |
582 | 582 | if (!cb_on_changed || (*variable != oldvalue)) | |
583 | function(*variable); | ||
584 | } | ||
583 | /* if the volume is changing we need to let the skins know */ | 585 | /* if the volume is changing we need to let the skins know */ |
584 | if (function == sound_get_fn(SOUND_VOLUME)) | 586 | if (function == sound_get_fn(SOUND_VOLUME)) |
585 | global_status.last_volume_change = current_tick; | 587 | global_status.last_volume_change = current_tick; |
diff --git a/apps/settings_list.c b/apps/settings_list.c index a830ea7428..32b1e38999 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -929,15 +929,15 @@ const struct settings_list settings[] = { | |||
929 | #endif | 929 | #endif |
930 | 930 | ||
931 | /* playback */ | 931 | /* playback */ |
932 | OFFON_SETTING(F_CB_ON_SELECT_ONLY_IF_CHANGED, playlist_shuffle, LANG_SHUFFLE, | 932 | OFFON_SETTING(F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, playlist_shuffle, |
933 | false, "shuffle", shuffle_playlist_callback), | 933 | LANG_SHUFFLE, false, "shuffle", shuffle_playlist_callback), |
934 | 934 | ||
935 | SYSTEM_SETTING(NVRAM(4), resume_index, -1), | 935 | SYSTEM_SETTING(NVRAM(4), resume_index, -1), |
936 | SYSTEM_SETTING(NVRAM(4), resume_crc32, -1), | 936 | SYSTEM_SETTING(NVRAM(4), resume_crc32, -1), |
937 | SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1), | 937 | SYSTEM_SETTING(NVRAM(4), resume_elapsed, -1), |
938 | SYSTEM_SETTING(NVRAM(4), resume_offset, -1), | 938 | SYSTEM_SETTING(NVRAM(4), resume_offset, -1), |
939 | CHOICE_SETTING(F_CB_ON_SELECT_ONLY_IF_CHANGED, repeat_mode, LANG_REPEAT, | 939 | CHOICE_SETTING(F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, repeat_mode, |
940 | REPEAT_OFF, "repeat", "off,all,one,shuffle" | 940 | LANG_REPEAT, REPEAT_OFF, "repeat", "off,all,one,shuffle" |
941 | #ifdef AB_REPEAT_ENABLE | 941 | #ifdef AB_REPEAT_ENABLE |
942 | ",ab" | 942 | ",ab" |
943 | #endif | 943 | #endif |
diff --git a/apps/settings_list.h b/apps/settings_list.h index 3e8739e525..3a6b0d60c2 100644 --- a/apps/settings_list.h +++ b/apps/settings_list.h | |||
@@ -102,7 +102,7 @@ struct table_setting { | |||
102 | #define F_TABLE_SETTING 0x2000 | 102 | #define F_TABLE_SETTING 0x2000 |
103 | #define F_ALLOW_ARBITRARY_VALS 0x4000 | 103 | #define F_ALLOW_ARBITRARY_VALS 0x4000 |
104 | #define F_CB_ON_SELECT_ONLY 0x20000 | 104 | #define F_CB_ON_SELECT_ONLY 0x20000 |
105 | #define F_CB_ON_SELECT_ONLY_IF_CHANGED (F_CB_ON_SELECT_ONLY|F_TEMPVAR) | 105 | #define F_CB_ONLY_IF_CHANGED 0x40000 |
106 | /* these use the _isfunc_type type for the function */ | 106 | /* these use the _isfunc_type type for the function */ |
107 | /* typedef int (*_isfunc_type)(void); */ | 107 | /* typedef int (*_isfunc_type)(void); */ |
108 | #define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */ | 108 | #define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */ |