Skip to content

fix(video): regression introduced by #19938 in threaded cached-frame replay - #19949

Merged
LibretroAdmin merged 1 commit into
libretro:masterfrom
jhonathanc:master
Oct 30, 2026
Merged

LibretroAdmin merged 1 commit into
libretro:masterfrom
jhonathanc:master

Conversation

@jhonathanc

Copy link
Copy Markdown
Contributor

Description

Fixes a regression introduced by #19938 in threaded cached-frame replay.

Widget visibility is now cached in video_frame_info_t, but
video_thread_frame_replay() bypasses the worker loop that normally
populates it. Screenshot readbacks and Windows resize/move redraws can
therefore reach the backend with widgets_visible=false even when
widgets are drawn, affecting UI composition and HDR brightness decisions.

Refresh widget visibility in the inline replay path, on the video thread,
without advancing widget animations again. Add regression coverage for
visible widgets and for clearing stale visibility when widgets are disabled.

Validation:

  • Both new assertions fail before the fix and pass afterward.
  • Linux menu/video regression suite and compile matrix passed.
  • C89 builds with and without threads passed.
  • MinGW build and native Windows headless harness passed.

Reviewers

@LibretroAdmin

Populate widgets_visible on the video thread during cached-frame replay,
which bypasses the normal worker loop. Keep UI composition and HDR
decisions consistent with the widgets being drawn without advancing
their animations again.

Extend the replay tests to cover visible widgets and stale visibility
after widgets are disabled.
@LibretroAdmin
LibretroAdmin merged commit 67b1c9c into libretro:master Oct 30, 2026
158 checks passed
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