mirror of
https://github.com/servo/servo
synced 2026-05-13 02:17:06 +02:00
For `pointerMove` with duration, we need to wait asynchronously and execute in parallel for subsequent moves. But we never did this correctly: we waited in a blocking way which broke the whole point of tick: making sure we simultaneously perform actions from multiple sources within a single unit time. To avoid async borrow-checker hell, we achieve the same effect using a event queue. > Spec: The initial pointer movement is performed synchronously. This ensures determinism in the sequence of the first event triggered by each action in the tick. > > Subsequent movements (if any) are performed asynchronously. This allows events from two [pointerMove](https://w3c.github.io/webdriver/#dfn-pointermove) actions in the tick to be interspersed. Testing: Existing WPT tests not affected, which is a good sign. Fixes: #42235 This is a pre-requisite to #41923: multi-touch support. --------- Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>