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.c25
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
207void* skin_backdrop_get_buffer(int backdrop_id) 207void 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
214void skin_backdrop_show(int backdrop_id) 231void skin_backdrop_show(int backdrop_id)