1
0
Fork 0
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:
William Wilgus 2024-12-19 11:32:26 -05:00
parent 12ea82d9e4
commit b77c973d1a

View file

@ -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;