From 914fcab06a102663f9c76800b13fb7c50c242a6b Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sun, 2 Mar 2025 16:09:17 -0500 Subject: [PATCH] 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 --- apps/settings.c | 1 + apps/settings_list.c | 34 +++++++++++++++++----------------- apps/settings_list.h | 2 +- apps/shortcuts.c | 4 ++-- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/apps/settings.c b/apps/settings.c index 7b126619b9..f7b9b1aef8 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -1385,6 +1385,7 @@ static char *debug_get_flags(uint32_t flags) SETTINGFLAGS(F_RECSETTING); SETTINGFLAGS(F_EQSETTING); SETTINGFLAGS(F_SOUNDSETTING); + SETTINGFLAGS(F_NEEDAPPLY); SETTINGFLAGS(F_CHOICE_SETTING); SETTINGFLAGS(F_CHOICETALKS); SETTINGFLAGS(F_TABLE_SETTING); diff --git a/apps/settings_list.c b/apps/settings_list.c index fc530a7266..c3b9c83175 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -213,7 +213,7 @@ {load_from_cfg, write_to_cfg, is_change, set_default}}}} #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 */ static const char off[] = "off"; @@ -1080,12 +1080,12 @@ const struct settings_list settings[] = { ID2P(LANG_INVERT_CURSOR_POINTER), ID2P(LANG_INVERT_CURSOR_BAR)), #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", NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP), ID2P(LANG_STATUSBAR_BOTTOM)), #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", NULL, 3, ID2P(LANG_OFF), ID2P(LANG_STATUSBAR_TOP), ID2P(LANG_STATUSBAR_BOTTOM)), @@ -1969,35 +1969,35 @@ const struct settings_list settings[] = { #if CONFIG_TUNER TEXT_SETTING(0, fmr_file, "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"), #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"), #endif #endif /* CONFIG_TUNER */ - TEXT_SETTING(F_THEMESETTING, font_file, "font", + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, font_file, "font", DEFAULT_FONTNAME, FONT_DIR "/", ".fnt"), INT_SETTING(0, glyphs_to_cache, LANG_GLYPHS, DEFAULT_GLYPHS, "glyphs", UNIT_INT, MIN_GLYPHS, MAX_GLYPHS, 10, NULL, NULL, NULL), #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"), #endif - TEXT_SETTING(F_THEMESETTING,wps_file, "wps", + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,wps_file, "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"), #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"), - TEXT_SETTING(F_THEMESETTING,rsbs_file, "rsbs", + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,rsbs_file, "rsbs", DEFAULT_SBSNAME, SBS_DIR "/", ".rsbs"), #endif TEXT_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng"), #if LCD_DEPTH > 1 - TEXT_SETTING(F_THEMESETTING,backdrop_file,"backdrop", + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY,backdrop_file,"backdrop", DEFAULT_BACKDROP, NULL, NULL), #endif TEXT_SETTING(0,kbd_file,"kbd","-",ROCKBOX_DIR "/",".kbd"), @@ -2061,20 +2061,20 @@ const struct settings_list settings[] = { #endif /* HAVE_RTC_ALARM */ /* 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"), - TEXT_SETTING(F_THEMESETTING, viewers_icon_file, "viewers iconset", + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, viewers_icon_file, "viewers iconset", DEFAULT_VIEWERS_ICONSET, ICON_DIR "/", ".bmp"), #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"), - TEXT_SETTING(F_THEMESETTING, remote_viewers_icon_file, + TEXT_SETTING(F_THEMESETTING|F_NEEDAPPLY, remote_viewers_icon_file, "remote viewers iconset", "-", ICON_DIR "/", ".bmp"), #endif /* HAVE_REMOTE_LCD */ #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"), #endif #ifdef HAVE_BUTTON_LIGHT diff --git a/apps/settings_list.h b/apps/settings_list.h index 58e5ec3486..dce448423f 100644 --- a/apps/settings_list.h +++ b/apps/settings_list.h @@ -158,7 +158,7 @@ struct custom_setting { #define F_RECSETTING 0x1000000 #define F_EQSETTING 0x2000000 #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_ONLY_IF_CHANGED 0x20000000 /* option_callback only called if setting changed */ diff --git a/apps/shortcuts.c b/apps/shortcuts.c index 0ac3fbea9c..74ca7b97cd 100644 --- a/apps/shortcuts.c +++ b/apps/shortcuts.c @@ -697,9 +697,9 @@ static enum themable_icons shortcut_menu_get_icon(int selected_item, void * data static void apply_new_setting(const struct settings_list *setting) { 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(); } if (setting->setting == &global_settings.sleeptimer_duration && get_sleep_timer()) {