From 0c99a3f9fb9db2e2ab96a69b5adc100462e72843 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Sun, 1 Nov 2020 12:25:39 -0500 Subject: Skin engine Onda Vx747 Fixing issues that existed before framebuf rewrite Fix swap issue Change-Id: I43e03b7aaf4591c1b6f88e3ba0730e279934c0df --- apps/gui/skin_engine/skin_engine.c | 4 +++- apps/gui/skin_engine/skin_render.c | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'apps/gui/skin_engine') diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index 049629b181..1515e6f025 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c @@ -29,6 +29,7 @@ #include "settings.h" #include "wps.h" #include "file.h" +#include "misc.h" #if CONFIG_TUNER #include "radio.h" #endif @@ -314,7 +315,8 @@ bool skin_do_full_update(enum skinnable_screens skin, { struct viewport *vp = *(screens[screen].current_viewport); - bool vp_is_dirty = ((vp->flags & VP_FLAG_VP_SET_CLEAN) == VP_FLAG_VP_DIRTY); + bool vp_is_dirty = ((vp->flags & VP_FLAG_VP_SET_CLEAN) == VP_FLAG_VP_DIRTY) && + get_current_activity() == ACTIVITY_WPS; bool ret = (skins[skin][screen].needs_full_update || vp_is_dirty); skins[skin][screen].needs_full_update = false; diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 6d4c0bcf68..67542adc6b 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c @@ -435,18 +435,18 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, { skin_backdrop_set_buffer(data->backdrop_id, skin_viewport); skin_backdrop_show(-1); - gwps->display->set_viewport(&skin_viewport->vp); + gwps->display->set_viewport_ex(&skin_viewport->vp, VP_FLAG_VP_SET_CLEAN); gwps->display->clear_viewport(); - gwps->display->set_viewport_ex(&info->skin_vp->vp, 0); + gwps->display->set_viewport_ex(&info->skin_vp->vp, VP_FLAG_VP_SET_CLEAN); skin_backdrop_set_buffer(-1, skin_viewport); skin_backdrop_show(data->backdrop_id); } else #endif { - gwps->display->set_viewport(&skin_viewport->vp); + gwps->display->set_viewport_ex(&skin_viewport->vp, VP_FLAG_VP_SET_CLEAN); gwps->display->clear_viewport(); - gwps->display->set_viewport_ex(&info->skin_vp->vp, 0); + gwps->display->set_viewport_ex(&info->skin_vp->vp, VP_FLAG_VP_SET_CLEAN); } skin_viewport->hidden_flags |= VP_DRAW_HIDDEN; } @@ -512,6 +512,7 @@ static void fix_line_alignment(struct skin_draw_info *info, struct skin_element static bool skin_render_line(struct skin_element* line, struct skin_draw_info *info) { bool needs_update = false; + int last_value, value; if (line->children_count == 0) @@ -571,6 +572,7 @@ static bool skin_render_line(struct skin_element* line, struct skin_draw_info *i info->refresh_type = old_refresh_mode; break; case TAG: + if (child->tag->flags & NOBREAK) info->no_line_break = true; if (child->tag->type == SKIN_TOKEN_SUBLINE_SCROLL) @@ -590,6 +592,10 @@ static bool skin_render_line(struct skin_element* line, struct skin_draw_info *i sizeof(tempbuf), NULL); if (valuestr) { +#if defined(ONDA_VX747) || defined(ONDA_VX747P) + /* Doesn't redraw (in sim at least) */ + needs_update = true; +#endif #if CONFIG_RTC if (child->tag->flags&SKIN_RTC_REFRESH) needs_update = needs_update || info->refresh_type&SKIN_REFRESH_DYNAMIC; @@ -602,6 +608,10 @@ static bool skin_render_line(struct skin_element* line, struct skin_draw_info *i } break; case TEXT: +#if defined(ONDA_VX747) || defined(ONDA_VX747P) + /* Doesn't redraw (in sim at least) */ + needs_update = true; +#endif strlcat(info->cur_align_start, SKINOFFSETTOPTR(skin_buffer, child->data), info->buf_size - (info->cur_align_start-info->buf)); needs_update = needs_update || -- cgit v1.2.3