summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_backdrops.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_backdrops.c')
-rw-r--r--apps/gui/skin_engine/skin_backdrops.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c
index 12b21ccb50..15b68589a9 100644
--- a/apps/gui/skin_engine/skin_backdrops.c
+++ b/apps/gui/skin_engine/skin_backdrops.c
@@ -95,6 +95,10 @@ int skin_backdrop_assign(char* backdrop, char *bmpdir,
95 filename[2] = '\0'; /* we check this later to see if we actually have an 95 filename[2] = '\0'; /* we check this later to see if we actually have an
96 image to load. != '\0' means display the image */ 96 image to load. != '\0' means display the image */
97 } 97 }
98 else if (!strcmp(backdrop, BACKDROP_BUFFERNAME))
99 {
100 strcpy(filename, backdrop);
101 }
98 else 102 else
99 { 103 {
100 get_image_filename(backdrop, bmpdir, filename, sizeof(filename)); 104 get_image_filename(backdrop, bmpdir, filename, sizeof(filename));
@@ -156,15 +160,20 @@ bool skin_backdrops_preload(void)
156 { 160 {
157 backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); 161 backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle);
158 handle_being_loaded = backdrops[i].buflib_handle; 162 handle_being_loaded = backdrops[i].buflib_handle;
159 backdrops[i].loaded = 163 if (strcmp(filename, BACKDROP_BUFFERNAME))
160 screens[screen].backdrop_load(filename, backdrops[i].buffer);
161 handle_being_loaded = -1;
162 if (!backdrops[i].loaded)
163 { 164 {
164 core_free(backdrops[i].buflib_handle); 165 backdrops[i].loaded =
165 backdrops[i].buflib_handle = -1; 166 screens[screen].backdrop_load(filename, backdrops[i].buffer);
166 retval = false; 167 handle_being_loaded = -1;
168 if (!backdrops[i].loaded)
169 {
170 core_free(backdrops[i].buflib_handle);
171 backdrops[i].buflib_handle = -1;
172 retval = false;
173 }
167 } 174 }
175 else
176 backdrops[i].loaded = true;
168 } 177 }
169 else 178 else
170 retval = false; 179 retval = false;
@@ -176,10 +185,21 @@ bool skin_backdrops_preload(void)
176 return retval; 185 return retval;
177} 186}
178 187
188void* skin_backdrop_get_buffer(int backdrop_id)
189{
190 if (backdrop_id < 0)
191 return NULL;
192 return backdrops[backdrop_id].buffer;
193}
194
179void skin_backdrop_show(int backdrop_id) 195void skin_backdrop_show(int backdrop_id)
180{ 196{
181 if (backdrop_id < 0) 197 if (backdrop_id < 0)
198 {
199 screens[0].backdrop_show(NULL);
200 current_lcd_backdrop[0] = -1;
182 return; 201 return;
202 }
183 enum screen_type screen = backdrops[backdrop_id].screen; 203 enum screen_type screen = backdrops[backdrop_id].screen;
184 if ((backdrops[backdrop_id].loaded == false) || 204 if ((backdrops[backdrop_id].loaded == false) ||
185 (backdrops[backdrop_id].name[0] == '-' && 205 (backdrops[backdrop_id].name[0] == '-' &&