Add more pointer validation check to ViewDragHelper.
Adding isPointerDown checks before modifying mInitialMotionX
and mLastMotionX arrays.
clearMotionHistory gets called on ACTION_POINTER_UP so there is
nothing to clear if we never got ACTION_POINTER_DOWN.
Merging to master manually as it has merge conflict due to support
library refactoring.
Bug: 29561625
Change-Id: I39c28dc58e0e96602d160c7168f5d555c147d27c
diff --git a/core-ui/java/android/support/v4/widget/ViewDragHelper.java b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
index 39972f0..48262fd 100644
--- a/core-ui/java/android/support/v4/widget/ViewDragHelper.java
+++ b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
@@ -791,7 +791,7 @@
}
private void clearMotionHistory(int pointerId) {
- if (mInitialMotionX == null) {
+ if (mInitialMotionX == null || !isPointerDown(pointerId)) {
return;
}
mInitialMotionX[pointerId] = 0;
@@ -846,6 +846,10 @@
final int pointerCount = ev.getPointerCount();
for (int i = 0; i < pointerCount; i++) {
final int pointerId = ev.getPointerId(i);
+ // If pointer is invalid then skip saving on ACTION_MOVE.
+ if (!isValidPointerForActionMove(pointerId)) {
+ continue;
+ }
final float x = ev.getX(i);
final float y = ev.getY(i);
mLastMotionX[pointerId] = x;