1
0
Fork 0
forked from len0rd/rockbox

shortcuts.c don't call settings_apply_skins() unless needed

Add F_NEEDAPPLY if F_THEMESETTING requires a call to settings_apply_skins()

Change-Id: Ied1bf7b2c4fb2e07bf1f54076e647bdc0844037a
This commit is contained in:
William Wilgus 2025-03-02 16:09:17 -05:00
parent 81c65536ec
commit 914fcab06a
4 changed files with 21 additions and 20 deletions

View file

@ -1385,6 +1385,7 @@ static char *debug_get_flags(uint32_t flags)
SETTINGFLAGS(F_RECSETTING); SETTINGFLAGS(F_RECSETTING);
SETTINGFLAGS(F_EQSETTING); SETTINGFLAGS(F_EQSETTING);
SETTINGFLAGS(F_SOUNDSETTING); SETTINGFLAGS(F_SOUNDSETTING);
SETTINGFLAGS(F_NEEDAPPLY);
SETTINGFLAGS(F_CHOICE_SETTING); SETTINGFLAGS(F_CHOICE_SETTING);
SETTINGFLAGS(F_CHOICETALKS); SETTINGFLAGS(F_CHOICETALKS);
SETTINGFLAGS(F_TABLE_SETTING); SETTINGFLAGS(F_TABLE_SETTING);

View file

@ -213,7 +213,7 @@
{load_from_cfg, write_to_cfg, is_change, set_default}}}} {load_from_cfg, write_to_cfg, is_change, set_default}}}}
#define VIEWPORT_SETTING(var,name) \ #define VIEWPORT_SETTING(var,name) \
TEXT_SETTING(F_THEMESETTING,var,name,"-", NULL, NULL) TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,var,name,"-", NULL, NULL)
/* some sets of values which are used more than once, to save memory */ /* some sets of values which are used more than once, to save memory */
static const char off[] = "off"; static const char off[] = "off";
@ -1080,12 +1080,12 @@ const struct settings_list settings[] = {
ID2P(LANG_INVERT_CURSOR_POINTER), ID2P(LANG_INVERT_CURSOR_POINTER),
ID2P(LANG_INVERT_CURSOR_BAR)), ID2P(LANG_INVERT_CURSOR_BAR)),
#endif #endif
CHOICE_SETTING(F_THEMESETTING|F_TEMPVAR, statusbar, CHOICE_SETTING(F_THEMESETTING|F_TEMPVAR|F_NEEDAPPLY, statusbar,
LANG_STATUS_BAR, STATUSBAR_TOP, "statusbar","off,top,bottom", LANG_STATUS_BAR, STATUSBAR_TOP, "statusbar","off,top,bottom",
NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP), NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP),
ID2P(LANG_STATUSBAR_BOTTOM)), ID2P(LANG_STATUSBAR_BOTTOM)),
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
CHOICE_SETTING(F_THEMESETTING|F_TEMPVAR, remote_statusbar, CHOICE_SETTING(F_THEMESETTING|F_TEMPVAR|F_NEEDAPPLY, remote_statusbar,
LANG_REMOTE_STATUSBAR, STATUSBAR_TOP, "remote statusbar","off,top,bottom", LANG_REMOTE_STATUSBAR, STATUSBAR_TOP, "remote statusbar","off,top,bottom",
NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP), NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP),
ID2P(LANG_STATUSBAR_BOTTOM)), ID2P(LANG_STATUSBAR_BOTTOM)),
@ -1969,35 +1969,35 @@ const struct settings_list settings[] = {
#if CONFIG_TUNER #if CONFIG_TUNER
TEXT_SETTING(0, fmr_file, "fmr", "-", TEXT_SETTING(0, fmr_file, "fmr", "-",
FMPRESET_PATH "/", ".fmr"), FMPRESET_PATH "/", ".fmr"),
TEXT_SETTING(F_THEMESETTING,fms_file, "fms", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,fms_file, "fms",
DEFAULT_FMS_NAME, SBS_DIR "/", ".fms"), DEFAULT_FMS_NAME, SBS_DIR "/", ".fms"),
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
TEXT_SETTING(F_THEMESETTING,rfms_file, "rfms", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,rfms_file, "rfms",
DEFAULT_FMS_NAME, SBS_DIR "/", ".rfms"), DEFAULT_FMS_NAME, SBS_DIR "/", ".rfms"),
#endif #endif
#endif /* CONFIG_TUNER */ #endif /* CONFIG_TUNER */
TEXT_SETTING(F_THEMESETTING, font_file, "font", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, font_file, "font",
DEFAULT_FONTNAME, FONT_DIR "/", ".fnt"), DEFAULT_FONTNAME, FONT_DIR "/", ".fnt"),
INT_SETTING(0, glyphs_to_cache, LANG_GLYPHS, DEFAULT_GLYPHS, INT_SETTING(0, glyphs_to_cache, LANG_GLYPHS, DEFAULT_GLYPHS,
"glyphs", UNIT_INT, MIN_GLYPHS, MAX_GLYPHS, 10, "glyphs", UNIT_INT, MIN_GLYPHS, MAX_GLYPHS, 10,
NULL, NULL, NULL), NULL, NULL, NULL),
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
TEXT_SETTING(F_THEMESETTING, remote_font_file, "remote font", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, remote_font_file, "remote font",
DEFAULT_REMOTE_FONTNAME, FONT_DIR "/", ".fnt"), DEFAULT_REMOTE_FONTNAME, FONT_DIR "/", ".fnt"),
#endif #endif
TEXT_SETTING(F_THEMESETTING,wps_file, "wps", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,wps_file, "wps",
DEFAULT_WPSNAME, WPS_DIR "/", ".wps"), DEFAULT_WPSNAME, WPS_DIR "/", ".wps"),
TEXT_SETTING(F_THEMESETTING,sbs_file, "sbs", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,sbs_file, "sbs",
DEFAULT_SBSNAME, SBS_DIR "/", ".sbs"), DEFAULT_SBSNAME, SBS_DIR "/", ".sbs"),
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
TEXT_SETTING(F_THEMESETTING,rwps_file,"rwps", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,rwps_file,"rwps",
DEFAULT_WPSNAME, WPS_DIR "/", ".rwps"), DEFAULT_WPSNAME, WPS_DIR "/", ".rwps"),
TEXT_SETTING(F_THEMESETTING,rsbs_file, "rsbs", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,rsbs_file, "rsbs",
DEFAULT_SBSNAME, SBS_DIR "/", ".rsbs"), DEFAULT_SBSNAME, SBS_DIR "/", ".rsbs"),
#endif #endif
TEXT_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng"), TEXT_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng"),
#if LCD_DEPTH > 1 #if LCD_DEPTH > 1
TEXT_SETTING(F_THEMESETTING,backdrop_file,"backdrop", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,backdrop_file,"backdrop",
DEFAULT_BACKDROP, NULL, NULL), DEFAULT_BACKDROP, NULL, NULL),
#endif #endif
TEXT_SETTING(0,kbd_file,"kbd","-",ROCKBOX_DIR "/",".kbd"), TEXT_SETTING(0,kbd_file,"kbd","-",ROCKBOX_DIR "/",".kbd"),
@ -2061,20 +2061,20 @@ const struct settings_list settings[] = {
#endif /* HAVE_RTC_ALARM */ #endif /* HAVE_RTC_ALARM */
/* Customizable icons */ /* Customizable icons */
TEXT_SETTING(F_THEMESETTING, icon_file, "iconset", DEFAULT_ICONSET, TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, icon_file, "iconset", DEFAULT_ICONSET,
ICON_DIR "/", ".bmp"), ICON_DIR "/", ".bmp"),
TEXT_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, viewers_icon_file, "viewers iconset",
DEFAULT_VIEWERS_ICONSET, DEFAULT_VIEWERS_ICONSET,
ICON_DIR "/", ".bmp"), ICON_DIR "/", ".bmp"),
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
TEXT_SETTING(F_THEMESETTING, remote_icon_file, "remote iconset", "-", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, remote_icon_file, "remote iconset", "-",
ICON_DIR "/", ".bmp"), ICON_DIR "/", ".bmp"),
TEXT_SETTING(F_THEMESETTING, remote_viewers_icon_file, TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, remote_viewers_icon_file,
"remote viewers iconset", "-", "remote viewers iconset", "-",
ICON_DIR "/", ".bmp"), ICON_DIR "/", ".bmp"),
#endif /* HAVE_REMOTE_LCD */ #endif /* HAVE_REMOTE_LCD */
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
TEXT_SETTING(F_THEMESETTING, colors_file, "filetype colours", "-", TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, colors_file, "filetype colours", "-",
THEME_DIR "/", ".colours"), THEME_DIR "/", ".colours"),
#endif #endif
#ifdef HAVE_BUTTON_LIGHT #ifdef HAVE_BUTTON_LIGHT

View file

@ -158,7 +158,7 @@ struct custom_setting {
#define F_RECSETTING 0x1000000 #define F_RECSETTING 0x1000000
#define F_EQSETTING 0x2000000 #define F_EQSETTING 0x2000000
#define F_SOUNDSETTING 0x4000000 #define F_SOUNDSETTING 0x4000000
/*#define _AVAILABLE_ 0x8000000*/ #define F_NEEDAPPLY 0x8000000 /*F_THEMESETTING needs apply to effect setting change*/
#define F_CB_ON_SELECT_ONLY 0x10000000 /* option_callback only called if selected */ #define F_CB_ON_SELECT_ONLY 0x10000000 /* option_callback only called if selected */
#define F_CB_ONLY_IF_CHANGED 0x20000000 /* option_callback only called if setting changed */ #define F_CB_ONLY_IF_CHANGED 0x20000000 /* option_callback only called if setting changed */

View file

@ -697,7 +697,7 @@ static enum themable_icons shortcut_menu_get_icon(int selected_item, void * data
static void apply_new_setting(const struct settings_list *setting) static void apply_new_setting(const struct settings_list *setting)
{ {
settings_apply(false); settings_apply(false);
if (setting->flags & F_THEMESETTING) if ((setting->flags & (F_THEMESETTING|F_NEEDAPPLY)) == (F_THEMESETTING|F_NEEDAPPLY))
{ {
settings_apply_skins(); settings_apply_skins();
} }