1
0
Fork 0
forked from len0rd/rockbox

[Bugfix] shuffle shenanigans from g5288 Fix #13369 shuffle & repeat callbacks

shuffle and sort were called on startup before playlist_init
and also on setting switch even without select

repeat is also now handled in settings_list as well

after moving the callbacks to settings_list.c
there was then a problem of unintended callbacks on exit of the menus
fixed that with F_CB_ON_SELECT_ONLY

since the callback was called regardless of the setting being changed
on F_CB_ON_SELECT_ONLY which is preferable in some circumstances
I co-opted F_TEMPVAR to allow the callback only when the setting was changed
with the flag F_CB_ON_SELECT_ONLY_IF_CHANGED

Change-Id: I5265233bbb556dc06c45273e742be5d78510a806
This commit is contained in:
William Wilgus 2023-08-27 10:54:44 -04:00 committed by William Wilgus
parent 3883c978ab
commit 1c80f53581
5 changed files with 37 additions and 66 deletions

View file

@ -102,6 +102,7 @@ struct table_setting {
#define F_TABLE_SETTING 0x2000
#define F_ALLOW_ARBITRARY_VALS 0x4000
#define F_CB_ON_SELECT_ONLY 0x20000
#define F_CB_ON_SELECT_ONLY_IF_CHANGED (F_CB_ON_SELECT_ONLY|F_TEMPVAR)
/* these use the _isfunc_type type for the function */
/* typedef int (*_isfunc_type)(void); */
#define F_MIN_ISFUNC 0x100000 /* min(above) is function pointer to above type */