diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-21 10:03:36 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-21 10:03:36 +0000 |
| commit | f78bcb165f7be0459ac951d7d71e24907febc32b (patch) | |
| tree | 48b0293b214a7d80d811d0eb19fbcfdea1291215 | |
| parent | 0ca4b38b1b04e6b7d6f5ad1f3654f8f361d8933f (diff) | |
| download | rockbox-f78bcb165f7be0459ac951d7d71e24907febc32b.tar.gz rockbox-f78bcb165f7be0459ac951d7d71e24907febc32b.tar.bz2 rockbox-f78bcb165f7be0459ac951d7d71e24907febc32b.zip | |
skinengine: Load the fms the first time the fm screen is entered instead of on boot to save some ram
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31038 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/gui/skin_engine/skin_engine.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index ce6c985e16..68d5c9c060 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c @@ -52,11 +52,12 @@ static struct gui_skin_helper { int (*preproccess)(enum screen_type screen, struct wps_data *data); int (*postproccess)(enum screen_type screen, struct wps_data *data); char* (*default_skin)(enum screen_type screen); + bool load_on_boot; } skin_helpers[SKINNABLE_SCREENS_COUNT] = { - [CUSTOM_STATUSBAR] = { sb_preproccess, sb_postproccess, sb_create_from_settings }, - [WPS] = { NULL, NULL, wps_default_skin }, + [CUSTOM_STATUSBAR] = { sb_preproccess, sb_postproccess, sb_create_from_settings, true }, + [WPS] = { NULL, NULL, wps_default_skin, true }, #if CONFIG_TUNER - [FM_SCREEN] = { NULL, NULL, default_radio_skin } + [FM_SCREEN] = { NULL, NULL, default_radio_skin, false } #endif }; @@ -155,14 +156,14 @@ void settings_apply_skins(void) } gui_skin_reset(&skins[i][j]); skins[i][j].gui_wps.display = &screens[j]; - skin_get_gwps(i, j); + if (skin_helpers[i].load_on_boot) + skin_get_gwps(i, j); } } } first_run = false; viewportmanager_theme_changed(THEME_STATUSBAR); #ifdef HAVE_BACKDROP_IMAGE - skin_backdrops_preload(); /* should maybe check the retval here... */ FOR_NB_SCREENS(i) skin_backdrop_show(sb_get_backdrop(i)); #endif @@ -191,6 +192,10 @@ void skin_load(enum skinnable_screens skin, enum screen_type screen, skins[skin][screen].needs_full_update = true; if (skin_helpers[skin].postproccess) skin_helpers[skin].postproccess(screen, &skins[skin][screen].data); +#ifdef HAVE_BACKDROP_IMAGE + if (loaded) + skin_backdrops_preload(); +#endif } static char* get_skin_filename(char *buf, size_t buf_size, |
