forked from len0rd/rockbox
[Bugfix] line_alternators reset scroll state without new data
this is fallout from allowing a scroll item redisplay timeouts
prior to eb3e5eb '[Feature] skinengine subline timeout hide line for n seconds'
the behavior could be seen sparingly
after we now have an alternator front and center with the next track scroll
unfortunately this results in strings never scrolling to completion
fix:
if the current line hasn't changed and we are not doing a
full screen refresh, don't invalidate the scroll viewport
(the scroll engine will still handle the user data changing
if that actually occurred)
Change-Id: I10d4b8a05caa28de617dc6454520ce5426d69532
This commit is contained in:
parent
12ea82d9e4
commit
b77c973d1a
1 changed files with 7 additions and 3 deletions
|
|
@ -712,14 +712,18 @@ bool skin_render_alternator(struct skin_element* element, struct skin_draw_info
|
|||
}
|
||||
while (try_line != start && !suitable);
|
||||
|
||||
if (info->refresh_type == SKIN_REFRESH_ALL
|
||||
|| try_line != alternator->current_line)
|
||||
{
|
||||
info->force_redraw = true;
|
||||
}
|
||||
info->refresh_type = SKIN_REFRESH_ALL;
|
||||
|
||||
if (suitable)
|
||||
{
|
||||
alternator->current_line = try_line;
|
||||
alternator->next_change_tick = current_tick + rettimeout;
|
||||
}
|
||||
|
||||
info->refresh_type = SKIN_REFRESH_ALL;
|
||||
info->force_redraw = true;
|
||||
}
|
||||
bool ret = skin_render_line(get_child(element->children, alternator->current_line), info);
|
||||
info->refresh_type = old_refresh;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue