You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Pair simulator pointer gestures before replacing the active gesture #545
SimulatorScreen forwards streamed down/move/up gestures but stores only one active pointer. Another pointer-down replaces pressRef without first ending the previous gesture; later up/cancel for the previous pointer is ignored. Its unmount cleanup releases frame/mask resources but does not explicitly end an active pointer gesture. A synthetic wheel gesture can also remain pending when a pointer gesture starts, and its idle callback sends a touch-up without owning the newer gesture.
The native consumer makes the ownership problem concrete: interactive::touch allocates a fresh HID identifier on down and replaces the per-device map entry without sending an up for the old identifier; a later up removes/releases only the currently mapped identifier. Pinch has the corresponding two-identifier lifetime. Thus an earlier injected touch can be left unmatched in the guest; this does not mean its old identifier remains retrievable in the daemon/sidecar map.
Finish the owned gesture before replacement/unmount, using its original device/callback, touch-or-pinch mode and last coordinates; settle wheel ownership before starting a pointer gesture, preserving normal cancel and pinch semantics. Source reassessment at master 22c337f only. No macOS/CoreSimulator gesture run or stuck-input duration has been measured in this reassessment.
Activity
pullfrog commentedon Oct 4, 2026
linear-code commentedon Oct 4, 2026
CODE-665