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