From dafca1405e6fa342b5740e74be43f0969b4606c8 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Tue, 23 Mar 2010 02:19:48 +0000 Subject: revert r25271 which caused more problems than it tried to fix git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25296 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/skin_engine/skin_display.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'apps/gui/skin_engine/skin_display.c') diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 8ea5dc5ecb..845ea18608 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -1123,10 +1123,11 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) struct skin_viewport *skin_viewport = (struct skin_viewport *)viewport_list->token->value.data; unsigned vp_refresh_mode = refresh_mode; - unsigned hidden_flags = skin_viewport->hidden_flags; display->set_viewport(&skin_viewport->vp); + int hidden_vp = 0; + #ifdef HAVE_LCD_BITMAP /* Set images to not to be displayed */ struct skin_token_list *imglist = data->images; @@ -1137,18 +1138,19 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) imglist = imglist->next; } #endif - if ((hidden_flags&VP_NEVER_VISIBLE)) - { - continue; + /* dont redraw the viewport if its disabled */ + if (skin_viewport->hidden_flags&VP_NEVER_VISIBLE) + { /* don't draw anything into this one */ + vp_refresh_mode = 0; hidden_vp = true; } - if ((hidden_flags&VP_DRAW_HIDDEN)) + else if ((skin_viewport->hidden_flags&VP_DRAW_HIDDEN)) { - if (!(hidden_flags&VP_DRAW_WASHIDDEN)) + if (!(skin_viewport->hidden_flags&VP_DRAW_WASHIDDEN)) display->scroll_stop(&skin_viewport->vp); skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN; continue; } - else if (((hidden_flags& + else if (((skin_viewport->hidden_flags& (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE)) == (VP_DRAW_WASHIDDEN|VP_DRAW_HIDEABLE))) { @@ -1158,8 +1160,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) if (vp_refresh_mode == WPS_REFRESH_ALL) { - if (!(hidden_flags&VP_NEVER_CLEAR)) - display->clear_viewport(); + display->clear_viewport(); } /* loop over the lines for this viewport */ @@ -1178,7 +1179,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) flags = line->curr_subline->line_type; if (vp_refresh_mode == WPS_REFRESH_ALL || (flags & vp_refresh_mode) - || new_subline_refresh) + || new_subline_refresh || hidden_vp) { /* get_line tells us if we need to update the line */ update_line = get_line(gwps, subline, &align, @@ -1224,7 +1225,7 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) } #endif - if (update_line && + if (update_line && !hidden_vp && /* conditionals clear the line which means if the %Vd is put into the default viewport there will be a blank line. To get around this we dont allow any actual drawing to happen in the @@ -1253,7 +1254,8 @@ static bool skin_redraw(struct gui_wps *gwps, unsigned refresh_mode) } } /* Now display any images in this viewport */ - wps_display_images(gwps, &skin_viewport->vp); + if (!hidden_vp) + wps_display_images(gwps, &skin_viewport->vp); #endif } -- cgit v1.2.3