Query InputState for pointer information when canceling a gesture
When the dispatcher produces a synthetic HOVER_EXIT or ACTION_CANCEL, it relies on the InputState to get the correct coordinates of this event. That's because these events should use the same coordinates as the last dispatched HOVER_MOVE or ACTION_MOVE event, and this data is stored inside InputState. Before this CL, this logic was checked by "HoverIntoClone" test. When this test ran, the dispatcher produced scary messages, saying that it was canceling events because an inconsistent event was received. Another test that had these logs was StylusHoverAndDownNoInputChannel. This could also be easily reproduced by sending a HOVER_ENTER and then a HOVER_EXIT. The HOVER_EXIT event would get rejected, and the dispatcher would use InputState to generate its own. Now with this CL, these messages are gone because the dispatcher is querying for these coords proactively instead of using the cancellation mechanism of InputState. Bug: 317183325 Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST --gtest_filter="*StylusHoverAndDownNoInputChannel" Change-Id: I44a2446171ab5d2368d7b7f8d806e45d5bb855c0
Loading
Please register or sign in to comment