diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-28 10:58:15 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-28 10:58:15 +0000 |
commit | d66592bad11b09ede186751a0fa1751feb29c15f (patch) | |
tree | 103c73932fe4a83df04d8b47020449f3faa72c0c /apps | |
parent | 25bce232f2883d2bba47fa9b908d1b95ee71cd3a (diff) | |
download | rockbox-d66592bad11b09ede186751a0fa1751feb29c15f.tar.gz rockbox-d66592bad11b09ede186751a0fa1751feb29c15f.zip |
Be less smart about when to reload skins as it caused more problems than it was worth. If any theme setting is loading from a .cfg reload all skins. Fixes FS#12410
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31081 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/skin_engine/skin_engine.c | 25 | ||||
-rw-r--r-- | apps/settings.c | 8 |
2 files changed, 14 insertions, 19 deletions
diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index e28e4fbbf4..30ec0e75b8 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c | |||
@@ -139,29 +139,20 @@ void settings_apply_skins(void) | |||
139 | { | 139 | { |
140 | FOR_NB_SCREENS(j) | 140 | FOR_NB_SCREENS(j) |
141 | { | 141 | { |
142 | bool load = false; | ||
143 | get_skin_filename(filename, MAX_PATH, i,j); | 142 | get_skin_filename(filename, MAX_PATH, i,j); |
144 | 143 | ||
145 | if (filename[0] && (strcmp(filename, skins[i][j].filename) || skins[i][j].failsafe_loaded)) | 144 | if (!first_run) |
146 | load = true; | ||
147 | else if (first_run || (!filename[0] && !skins[i][j].failsafe_loaded)) | ||
148 | load = true; | ||
149 | |||
150 | if (load) | ||
151 | { | 145 | { |
152 | if (!first_run) | 146 | skin_data_free_buflib_allocs(&skins[i][j].data); |
153 | { | ||
154 | skin_data_free_buflib_allocs(&skins[i][j].data); | ||
155 | #ifdef HAVE_BACKDROP_IMAGE | 147 | #ifdef HAVE_BACKDROP_IMAGE |
156 | if (skins[i][j].data.backdrop_id >= 0) | 148 | if (skins[i][j].data.backdrop_id >= 0) |
157 | skin_backdrop_unload(skins[i][j].data.backdrop_id); | 149 | skin_backdrop_unload(skins[i][j].data.backdrop_id); |
158 | #endif | 150 | #endif |
159 | } | ||
160 | gui_skin_reset(&skins[i][j]); | ||
161 | skins[i][j].gui_wps.display = &screens[j]; | ||
162 | if (skin_helpers[i].load_on_boot) | ||
163 | skin_get_gwps(i, j); | ||
164 | } | 151 | } |
152 | gui_skin_reset(&skins[i][j]); | ||
153 | skins[i][j].gui_wps.display = &screens[j]; | ||
154 | if (skin_helpers[i].load_on_boot) | ||
155 | skin_get_gwps(i, j); | ||
165 | } | 156 | } |
166 | } | 157 | } |
167 | first_run = false; | 158 | first_run = false; |
diff --git a/apps/settings.c b/apps/settings.c index 3c28d316b5..408e377e1a 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -268,6 +268,7 @@ bool settings_load_config(const char* file, bool apply) | |||
268 | char* name; | 268 | char* name; |
269 | char* value; | 269 | char* value; |
270 | int i; | 270 | int i; |
271 | bool theme_changed = false; | ||
271 | fd = open_utf8(file, O_RDONLY); | 272 | fd = open_utf8(file, O_RDONLY); |
272 | if (fd < 0) | 273 | if (fd < 0) |
273 | return false; | 274 | return false; |
@@ -275,13 +276,15 @@ bool settings_load_config(const char* file, bool apply) | |||
275 | while (read_line(fd, line, sizeof line) > 0) | 276 | while (read_line(fd, line, sizeof line) > 0) |
276 | { | 277 | { |
277 | if (!settings_parseline(line, &name, &value)) | 278 | if (!settings_parseline(line, &name, &value)) |
278 | continue; | 279 | continue; |
279 | for(i=0; i<nb_settings; i++) | 280 | for(i=0; i<nb_settings; i++) |
280 | { | 281 | { |
281 | if (settings[i].cfg_name == NULL) | 282 | if (settings[i].cfg_name == NULL) |
282 | continue; | 283 | continue; |
283 | if (!strcasecmp(name,settings[i].cfg_name)) | 284 | if (!strcasecmp(name,settings[i].cfg_name)) |
284 | { | 285 | { |
286 | if (settings[i].flags&F_THEMESETTING) | ||
287 | theme_changed = true; | ||
285 | switch (settings[i].flags&F_T_MASK) | 288 | switch (settings[i].flags&F_T_MASK) |
286 | { | 289 | { |
287 | case F_T_CUSTOM: | 290 | case F_T_CUSTOM: |
@@ -363,7 +366,8 @@ bool settings_load_config(const char* file, bool apply) | |||
363 | { | 366 | { |
364 | settings_save(); | 367 | settings_save(); |
365 | settings_apply(true); | 368 | settings_apply(true); |
366 | settings_apply_skins(); | 369 | if (theme_changed) |
370 | settings_apply_skins(); | ||
367 | } | 371 | } |
368 | return true; | 372 | return true; |
369 | } | 373 | } |