diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_backdrops.c')
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 16 |
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 | } |