summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/option_select.c8
-rw-r--r--apps/settings_list.c8
-rw-r--r--apps/settings_list.h2
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 */