summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_render.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_render.c')
-rw-r--r--apps/gui/skin_engine/skin_render.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index 951d34a724..d4ddf99c34 100644
--- a/apps/gui/skin_engine/skin_render.c
+++ b/apps/gui/skin_engine/skin_render.c
@@ -385,11 +385,22 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch,
385 skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN; 385 skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN;
386 else 386 else
387 { 387 {
388 if (skin_viewport->output_to_backdrop_buffer)
389 {
390 void *backdrop = skin_backdrop_get_buffer(data->backdrop_id);
391 gwps->display->set_framebuffer(backdrop);
392 skin_backdrop_show(-1);
393 }
388 gwps->display->set_viewport(&skin_viewport->vp); 394 gwps->display->set_viewport(&skin_viewport->vp);
389 gwps->display->clear_viewport(); 395 gwps->display->clear_viewport();
390 gwps->display->scroll_stop(&skin_viewport->vp); 396 gwps->display->scroll_stop(&skin_viewport->vp);
391 gwps->display->set_viewport(&info->skin_vp->vp); 397 gwps->display->set_viewport(&info->skin_vp->vp);
392 skin_viewport->hidden_flags |= VP_DRAW_HIDDEN; 398 skin_viewport->hidden_flags |= VP_DRAW_HIDDEN;
399 if (skin_viewport->output_to_backdrop_buffer)
400 {
401 gwps->display->set_framebuffer(NULL);
402 skin_backdrop_show(data->backdrop_id);
403 }
393 } 404 }
394 } 405 }
395 } 406 }
@@ -767,6 +778,7 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode)
767 data->wps_progress_pat[i] = display->get_locked_pattern(); 778 data->wps_progress_pat[i] = display->get_locked_pattern();
768 } 779 }
769#endif 780#endif
781
770 viewport = SKINOFFSETTOPTR(skin_buffer, data->tree); 782 viewport = SKINOFFSETTOPTR(skin_buffer, data->tree);
771 skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); 783 skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data);
772 label = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label); 784 label = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label);
@@ -786,6 +798,16 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode)
786#if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) 798#if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1)
787 skin_viewport->vp.fg_pattern = skin_viewport->start_fgcolour; 799 skin_viewport->vp.fg_pattern = skin_viewport->start_fgcolour;
788 skin_viewport->vp.bg_pattern = skin_viewport->start_bgcolour; 800 skin_viewport->vp.bg_pattern = skin_viewport->start_bgcolour;
801 if (skin_viewport->output_to_backdrop_buffer)
802 {
803 display->set_framebuffer(skin_backdrop_get_buffer(data->backdrop_id));
804 skin_backdrop_show(-1);
805 }
806 else
807 {
808 display->set_framebuffer(NULL);
809 skin_backdrop_show(data->backdrop_id);
810 }
789#endif 811#endif
790#ifdef HAVE_LCD_COLOR 812#ifdef HAVE_LCD_COLOR
791 skin_viewport->vp.lss_pattern = skin_viewport->start_gradient.start; 813 skin_viewport->vp.lss_pattern = skin_viewport->start_gradient.start;
@@ -822,7 +844,10 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode)
822 skin_viewport, vp_refresh_mode); 844 skin_viewport, vp_refresh_mode);
823 refresh_mode = old_refresh_mode; 845 refresh_mode = old_refresh_mode;
824 } 846 }
825 847#ifdef HAVE_LCD_BITMAP
848 display->set_framebuffer(NULL);
849 skin_backdrop_show(data->backdrop_id);
850#endif
826 /* Restore the default viewport */ 851 /* Restore the default viewport */
827 display->set_viewport(NULL); 852 display->set_viewport(NULL);
828 display->update(); 853 display->update();