[PROBE / do-not-merge] frame-paced mouse synth + ctrl_shortcuts CI instrumentation#183
Closed
borisbat wants to merge 2 commits into
Closed
[PROBE / do-not-merge] frame-paced mouse synth + ctrl_shortcuts CI instrumentation#183borisbat wants to merge 2 commits into
borisbat wants to merge 2 commits into
Conversation
…frame advance_mouse_timeline fired every event with t_ms <= now_ms (wall-clock), so on a coarse frame (the windows CI runner, where each test also eats ~10s of host spawn) the press and the destination move collapse into ONE frame: imgui sees the button go down with the cursor already at the end, so the splitter/slider activates with a zero per-frame delta and never moves. test_layout_helpers' real-drag subtest fails exactly this way on windows-latest (value/geometry unchanged) while passing on mac/ubuntu and on a fast local box. Keys already solved this: imgui_key_chord / imgui_key_play are frame-paced (t_ms read as a frame index, one event-group per frame). Mirror it for the mouse: - imgui_live_core: mouse_frame_paced / mouse_frame_no; advance_mouse_timeline steps the threshold by frame index when paced (the existing lerp then interpolates one cursor delta per frame); MousePlayArgs.frame_paced opts in. Wall-clock callers (move_to / click_at / plain play) are byte-identical. - imgui_playwright: drag() emits a frame-indexed timeline with frame_paced=true, so press -> sweep -> release each land on their own frame regardless of dt. drag_to() inherits via drag(). Reproduced locally by throttling the headless harness frame loop to 300ms/frame (test_layout_helpers drag FAIL -> PASS after this change); drag_drop / io_synth_drag stay green at the same throttle. Clicks/recordings (wall-clock) are untouched. Also clears 4 pre-existing LINT012 surfaced by touching the file (_input on the status/stop live_command handlers, matching imgui_snapshot's pattern). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…CI diagnosis Throwaway. On the windows-CI failure the enriched message prints the actual NAME_INPUT value, io.active_widget, focus, and key-timeline drain (playing + queue idx/total), which disambiguates activation-race vs keys-lost vs insert-not-replace vs timeline-stall. Revert after the failure state is captured. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closed — superseded by #184 (clean mouse-fix PR off master). Probe served its purpose: validated the frame-paced mouse fix on real windows CI (
test_layout_helpersPASS) and captured thectrl_shortcutsfailure state (host returns null during subtest 3 — host-side death, deferred with the docking crash).