summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_engine.c4
-rw-r--r--apps/gui/skin_engine/skin_render.c18
2 files changed, 17 insertions, 5 deletions
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 @@
29#include "settings.h" 29#include "settings.h"
30#include "wps.h" 30#include "wps.h"
31#include "file.h" 31#include "file.h"
32#include "misc.h"
32#if CONFIG_TUNER 33#if CONFIG_TUNER
33#include "radio.h" 34#include "radio.h"
34#endif 35#endif
@@ -314,7 +315,8 @@ bool skin_do_full_update(enum skinnable_screens skin,
314{ 315{
315 struct viewport *vp = *(screens[screen].current_viewport); 316 struct viewport *vp = *(screens[screen].current_viewport);
316 317
317 bool vp_is_dirty = ((vp->flags & VP_FLAG_VP_SET_CLEAN) == VP_FLAG_VP_DIRTY); 318 bool vp_is_dirty = ((vp->flags & VP_FLAG_VP_SET_CLEAN) == VP_FLAG_VP_DIRTY) &&
319 get_current_activity() == ACTIVITY_WPS;
318 320
319 bool ret = (skins[skin][screen].needs_full_update || vp_is_dirty); 321 bool ret = (skins[skin][screen].needs_full_update || vp_is_dirty);
320 skins[skin][screen].needs_full_update = false; 322 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,
435 { 435 {
436 skin_backdrop_set_buffer(data->backdrop_id, skin_viewport); 436 skin_backdrop_set_buffer(data->backdrop_id, skin_viewport);
437 skin_backdrop_show(-1); 437 skin_backdrop_show(-1);
438 gwps->display->set_viewport(&skin_viewport->vp); 438 gwps->display->set_viewport_ex(&skin_viewport->vp, VP_FLAG_VP_SET_CLEAN);
439 gwps->display->clear_viewport(); 439 gwps->display->clear_viewport();
440 gwps->display->set_viewport_ex(&info->skin_vp->vp, 0); 440 gwps->display->set_viewport_ex(&info->skin_vp->vp, VP_FLAG_VP_SET_CLEAN);
441 skin_backdrop_set_buffer(-1, skin_viewport); 441 skin_backdrop_set_buffer(-1, skin_viewport);
442 skin_backdrop_show(data->backdrop_id); 442 skin_backdrop_show(data->backdrop_id);
443 } 443 }
444 else 444 else
445#endif 445#endif
446 { 446 {
447 gwps->display->set_viewport(&skin_viewport->vp); 447 gwps->display->set_viewport_ex(&skin_viewport->vp, VP_FLAG_VP_SET_CLEAN);
448 gwps->display->clear_viewport(); 448 gwps->display->clear_viewport();
449 gwps->display->set_viewport_ex(&info->skin_vp->vp, 0); 449 gwps->display->set_viewport_ex(&info->skin_vp->vp, VP_FLAG_VP_SET_CLEAN);
450 } 450 }
451 skin_viewport->hidden_flags |= VP_DRAW_HIDDEN; 451 skin_viewport->hidden_flags |= VP_DRAW_HIDDEN;
452 } 452 }
@@ -512,6 +512,7 @@ static void fix_line_alignment(struct skin_draw_info *info, struct skin_element
512static bool skin_render_line(struct skin_element* line, struct skin_draw_info *info) 512static bool skin_render_line(struct skin_element* line, struct skin_draw_info *info)
513{ 513{
514 bool needs_update = false; 514 bool needs_update = false;
515
515 int last_value, value; 516 int last_value, value;
516 517
517 if (line->children_count == 0) 518 if (line->children_count == 0)
@@ -571,6 +572,7 @@ static bool skin_render_line(struct skin_element* line, struct skin_draw_info *i
571 info->refresh_type = old_refresh_mode; 572 info->refresh_type = old_refresh_mode;
572 break; 573 break;
573 case TAG: 574 case TAG:
575
574 if (child->tag->flags & NOBREAK) 576 if (child->tag->flags & NOBREAK)
575 info->no_line_break = true; 577 info->no_line_break = true;
576 if (child->tag->type == SKIN_TOKEN_SUBLINE_SCROLL) 578 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
590 sizeof(tempbuf), NULL); 592 sizeof(tempbuf), NULL);
591 if (valuestr) 593 if (valuestr)
592 { 594 {
595#if defined(ONDA_VX747) || defined(ONDA_VX747P)
596 /* Doesn't redraw (in sim at least) */
597 needs_update = true;
598#endif
593#if CONFIG_RTC 599#if CONFIG_RTC
594 if (child->tag->flags&SKIN_RTC_REFRESH) 600 if (child->tag->flags&SKIN_RTC_REFRESH)
595 needs_update = needs_update || info->refresh_type&SKIN_REFRESH_DYNAMIC; 601 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
602 } 608 }
603 break; 609 break;
604 case TEXT: 610 case TEXT:
611#if defined(ONDA_VX747) || defined(ONDA_VX747P)
612 /* Doesn't redraw (in sim at least) */
613 needs_update = true;
614#endif
605 strlcat(info->cur_align_start, SKINOFFSETTOPTR(skin_buffer, child->data), 615 strlcat(info->cur_align_start, SKINOFFSETTOPTR(skin_buffer, child->data),
606 info->buf_size - (info->cur_align_start-info->buf)); 616 info->buf_size - (info->cur_align_start-info->buf));
607 needs_update = needs_update || 617 needs_update = needs_update ||