Skip to content

fix: stop game grid cover art flickering on every poll - #47

Merged
GuiDev1994 merged 1 commit into
GuiDev1994:mainfrom
KrisEnigma:fix/apps-grid-cover-flicker
Jul 20, 2026
Merged

fix: stop game grid cover art flickering on every poll#47
GuiDev1994 merged 1 commit into
GuiDev1994:mainfrom
KrisEnigma:fix/apps-grid-cover-flicker

Conversation

@KrisEnigma

@KrisEnigma KrisEnigma commented Jul 17, 2026

Copy link
Copy Markdown

In short, the app selection flickered every 10 seconds, this fixes it.

apps_list_detect_change() always returned a NULL changes pointer, even when it determined the list was identical (num_changes=0). lv_gridview_set_data_advanced() treats changes==NULL as 'invalidate everything' regardless of num_changes, so every single poll -- even ones where nothing changed -- fully recycled and rebuilt every visible tile. Compounding this, appitem_bind() unconditionally called coverloader_display() on every rebind, restarting the cover art load even when the tile was already showing the correct app. Together these caused a visible flicker on every ~10s poll.

Fixed by having apps_list_detect_change() return a non-NULL (if empty) sentinel whenever num_changes=0, so the widget skips the unnecessary full rebuild, and by skipping coverloader_display() in appitem_bind() when the view is already displaying the right app's cover.

Confirmed via git history and a live fetch of mariotaku/moonlight-tv's current source that both of these are latent bugs shared with upstream, not something introduced by this fork.

Touches apps.controller.c, same file as the focus-preservation PR (not git-stacked, but overlapping) -- recommend merging one before the other to avoid a conflict.

apps_list_detect_change() always returned a NULL changes pointer, even
when it determined the list was identical (num_changes=0).
lv_gridview_set_data_advanced() treats changes==NULL as 'invalidate
everything' regardless of num_changes, so every single poll -- even
ones where nothing changed -- fully recycled and rebuilt every visible
tile. Compounding this, appitem_bind() unconditionally called
coverloader_display() on every rebind, restarting the cover art load
even when the tile was already showing the correct app. Together these
caused a visible flicker on every ~10s poll.

Fixed by having apps_list_detect_change() return a non-NULL (if empty)
sentinel whenever num_changes=0, so the widget skips the unnecessary
full rebuild, and by skipping coverloader_display() in appitem_bind()
when the view is already displaying the right app's cover.

Confirmed via git history and a live fetch of mariotaku/moonlight-tv's
current source that both of these are latent bugs shared with
upstream, not something introduced by this fork.
@GuiDev1994
GuiDev1994 merged commit 679063b into GuiDev1994:main Jul 20, 2026

@GuiDev1994 GuiDev1994 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved and included in #51 (Release v1.1.4).

@GuiDev1994

Copy link
Copy Markdown
Owner

Included in Aurora v1.1.4 via #.

Thank you @KrisEnigma — credited in the README Contributors section and preserved in git history on main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants