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 /apps | |
parent | 0ca4b38b1b04e6b7d6f5ad1f3654f8f361d8933f (diff) | |
download | rockbox-f78bcb165f7be0459ac951d7d71e24907febc32b.tar.gz 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
Diffstat (limited to 'apps')
-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 { | |||
52 | int (*preproccess)(enum screen_type screen, struct wps_data *data); | 52 | int (*preproccess)(enum screen_type screen, struct wps_data *data); |
53 | int (*postproccess)(enum screen_type screen, struct wps_data *data); | 53 | int (*postproccess)(enum screen_type screen, struct wps_data *data); |
54 | char* (*default_skin)(enum screen_type screen); | 54 | char* (*default_skin)(enum screen_type screen); |
55 | bool load_on_boot; | ||
55 | } skin_helpers[SKINNABLE_SCREENS_COUNT] = { | 56 | } skin_helpers[SKINNABLE_SCREENS_COUNT] = { |
56 | [CUSTOM_STATUSBAR] = { sb_preproccess, sb_postproccess, sb_create_from_settings }, | 57 | [CUSTOM_STATUSBAR] = { sb_preproccess, sb_postproccess, sb_create_from_settings, true }, |
57 | [WPS] = { NULL, NULL, wps_default_skin }, | 58 | [WPS] = { NULL, NULL, wps_default_skin, true }, |
58 | #if CONFIG_TUNER | 59 | #if CONFIG_TUNER |
59 | [FM_SCREEN] = { NULL, NULL, default_radio_skin } | 60 | [FM_SCREEN] = { NULL, NULL, default_radio_skin, false } |
60 | #endif | 61 | #endif |
61 | }; | 62 | }; |
62 | 63 | ||
@@ -155,14 +156,14 @@ void settings_apply_skins(void) | |||
155 | } | 156 | } |
156 | gui_skin_reset(&skins[i][j]); | 157 | gui_skin_reset(&skins[i][j]); |
157 | skins[i][j].gui_wps.display = &screens[j]; | 158 | skins[i][j].gui_wps.display = &screens[j]; |
158 | skin_get_gwps(i, j); | 159 | if (skin_helpers[i].load_on_boot) |
160 | skin_get_gwps(i, j); | ||
159 | } | 161 | } |
160 | } | 162 | } |
161 | } | 163 | } |
162 | first_run = false; | 164 | first_run = false; |
163 | viewportmanager_theme_changed(THEME_STATUSBAR); | 165 | viewportmanager_theme_changed(THEME_STATUSBAR); |
164 | #ifdef HAVE_BACKDROP_IMAGE | 166 | #ifdef HAVE_BACKDROP_IMAGE |
165 | skin_backdrops_preload(); /* should maybe check the retval here... */ | ||
166 | FOR_NB_SCREENS(i) | 167 | FOR_NB_SCREENS(i) |
167 | skin_backdrop_show(sb_get_backdrop(i)); | 168 | skin_backdrop_show(sb_get_backdrop(i)); |
168 | #endif | 169 | #endif |
@@ -191,6 +192,10 @@ void skin_load(enum skinnable_screens skin, enum screen_type screen, | |||
191 | skins[skin][screen].needs_full_update = true; | 192 | skins[skin][screen].needs_full_update = true; |
192 | if (skin_helpers[skin].postproccess) | 193 | if (skin_helpers[skin].postproccess) |
193 | skin_helpers[skin].postproccess(screen, &skins[skin][screen].data); | 194 | skin_helpers[skin].postproccess(screen, &skins[skin][screen].data); |
195 | #ifdef HAVE_BACKDROP_IMAGE | ||
196 | if (loaded) | ||
197 | skin_backdrops_preload(); | ||
198 | #endif | ||
194 | } | 199 | } |
195 | 200 | ||
196 | static char* get_skin_filename(char *buf, size_t buf_size, | 201 | static char* get_skin_filename(char *buf, size_t buf_size, |