Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 6464e46b authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Clear downTime when all pointers have lifted

Due to a recent change, the TouchWindows are getting persisted inside
TouchState. As a result, we need to keep a consistent state inside them.

Before this CL, the downTime of the TouchedWindow would get set with the
first pointer, but it would never reset. We used to rely on the fact
that the TouchedWindow would go away.

Now that is no longer the case.

In this CL, the downTime is cleared when all pointers leave the window.
The downTime can be set again when a new pointer appears.

This fixes one of the crashes due to the mismatching downTimes. To
reproduce the failure, we need to:
1) Find a way to persist a window
This can be done by injecting a mouse pointer into the window, and keep
the mouse there
2) Establish a downTime
This can be done by tapping on the window
3) Send another DOWN event while splitting the pointers.
Normally, a DOWN event would not go through the "splitting" path, and
therefore the crash would be avoided. The splitting path can be
triggered if we first touch another window, and then touch the first
one. The split touch feature would cause an ACTION_DOWN to get
generated, which would then trigger the 'split' case.

Bug: 266455987
Test: m inputflinger_tests && $ANDROID_HOST_OUT/nativetest64/inputflinger_tests/inputflinger_tests --gtest_filter="*HoverTapAndSplitTouch*"
Change-Id: I2340b5ab70a3659f52fc38fa4d9e2c9edfe1a768
parent 76de5eed
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment