summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_backdrops.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c
index 3a000b2c1a..e337774994 100644
--- a/apps/gui/skin_engine/skin_backdrops.c
+++ b/apps/gui/skin_engine/skin_backdrops.c
@@ -35,6 +35,7 @@ static struct skin_backdrop {
35 char name[MAX_PATH]; 35 char name[MAX_PATH];
36 char *buffer; 36 char *buffer;
37 enum screen_type screen; 37 enum screen_type screen;
38 bool loaded;
38} backdrops[NB_BDROPS]; 39} backdrops[NB_BDROPS];
39 40
40#define NB_BDROPS SKINNABLE_SCREENS_COUNT*NB_SCREENS 41#define NB_BDROPS SKINNABLE_SCREENS_COUNT*NB_SCREENS
@@ -46,6 +47,7 @@ void skin_backdrop_init(void)
46 { 47 {
47 backdrops[i].name[0] = '\0'; 48 backdrops[i].name[0] = '\0';
48 backdrops[i].buffer = NULL; 49 backdrops[i].buffer = NULL;
50 backdrops[i].loaded = false;
49 } 51 }
50} 52}
51 53
@@ -101,7 +103,6 @@ bool skin_backdrops_preload(void)
101 if (backdrops[i].name[0] && !backdrops[i].buffer) 103 if (backdrops[i].name[0] && !backdrops[i].buffer)
102 { 104 {
103 size_t buf_size; 105 size_t buf_size;
104 bool loaded = false;
105 enum screen_type screen = backdrops[i].screen; 106 enum screen_type screen = backdrops[i].screen;
106#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) 107#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)
107 if (screen == SCREEN_REMOTE) 108 if (screen == SCREEN_REMOTE)
@@ -125,12 +126,12 @@ bool skin_backdrops_preload(void)
125 if (*filename && *filename != '-') 126 if (*filename && *filename != '-')
126 { 127 {
127 backdrops[i].buffer = (char*)skin_buffer_alloc(buf_size); 128 backdrops[i].buffer = (char*)skin_buffer_alloc(buf_size);
128 loaded = backdrops[i].buffer && 129 backdrops[i].loaded = backdrops[i].buffer &&
129 screens[screen].backdrop_load(filename, backdrops[i].buffer); 130 screens[screen].backdrop_load(filename, backdrops[i].buffer);
130 if (!loaded) 131 if (!backdrops[i].loaded)
131 retval = false; 132 retval = false;
132 } 133 }
133 if (backdrops[i].name[0] == '-' && loaded) 134 if (backdrops[i].name[0] == '-' && backdrops[i].loaded)
134 backdrops[i].name[2] = '.'; 135 backdrops[i].name[2] = '.';
135 } 136 }
136 } 137 }
@@ -142,9 +143,12 @@ void skin_backdrop_show(int backdrop_id)
142 if (backdrop_id < 0) 143 if (backdrop_id < 0)
143 return; 144 return;
144 enum screen_type screen = backdrops[backdrop_id].screen; 145 enum screen_type screen = backdrops[backdrop_id].screen;
145 if (backdrops[backdrop_id].name[0] == '-' && 146 if ((backdrops[backdrop_id].loaded == false) ||
146 backdrops[backdrop_id].name[2] == '\0') 147 (backdrops[backdrop_id].name[0] == '-' &&
148 backdrops[backdrop_id].name[2] == '\0'))
149 {
147 screens[screen].backdrop_show(NULL); 150 screens[screen].backdrop_show(NULL);
151 }
148 else if (backdrops[backdrop_id].buffer) 152 else if (backdrops[backdrop_id].buffer)
149 screens[screen].backdrop_show(backdrops[backdrop_id].buffer); 153 screens[screen].backdrop_show(backdrops[backdrop_id].buffer);
150} 154}