diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_backdrops.c')
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c index 243fc30a3a..caf705af54 100644 --- a/apps/gui/skin_engine/skin_backdrops.c +++ b/apps/gui/skin_engine/skin_backdrops.c | |||
@@ -204,11 +204,28 @@ bool skin_backdrops_preload(void) | |||
204 | return retval; | 204 | return retval; |
205 | } | 205 | } |
206 | 206 | ||
207 | void* skin_backdrop_get_buffer(int backdrop_id) | 207 | void skin_backdrop_set_buffer(int backdrop_id, struct skin_viewport *svp) |
208 | { | 208 | { |
209 | if (backdrop_id < 0) | 209 | if (UNLIKELY(!svp)) |
210 | return NULL; | 210 | return; |
211 | return backdrops[backdrop_id].buffer; | 211 | else if (backdrop_id < 0) |
212 | { | ||
213 | svp->vp.buffer = NULL; /*Default*/ | ||
214 | return; | ||
215 | } | ||
216 | |||
217 | enum screen_type screen = backdrops[backdrop_id].screen; | ||
218 | svp->framebuf.ch_ptr = backdrops[backdrop_id].buffer; | ||
219 | #if defined(HAVE_REMOTE_LCD) | ||
220 | if (screen == SCREEN_REMOTE) | ||
221 | svp->framebuf.elems = REMOTE_LCD_BACKDROP_BYTES / sizeof(fb_remote_data); | ||
222 | else | ||
223 | #endif | ||
224 | { | ||
225 | svp->framebuf.elems = LCD_BACKDROP_BYTES / sizeof(fb_data); | ||
226 | } | ||
227 | svp->framebuf.get_address_fn = NULL; /*Default iterator*/ | ||
228 | screens[screen].viewport_set_buffer(&svp->vp, &svp->framebuf); | ||
212 | } | 229 | } |
213 | 230 | ||
214 | void skin_backdrop_show(int backdrop_id) | 231 | void skin_backdrop_show(int backdrop_id) |