From 0a65077e9b908f0d8d65ee9e205c41fca8a8f9cd Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Fri, 8 Sep 2017 17:55:00 -0700 Subject: [PATCH] Work around issue #65333586: Took phone out of pocket... ...and screen was flickering badly Don't crash if we get a bad pointer ID, just log a wtf for us to find in APR. Bug: 65333586 Test: manual Change-Id: I6f522e05735a64b672c011012c3e3514d454dd8f --- .../com/android/internal/widget/PointerLocationView.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/com/android/internal/widget/PointerLocationView.java b/core/java/com/android/internal/widget/PointerLocationView.java index 592576bb41d06..e53162cc97fd8 100644 --- a/core/java/com/android/internal/widget/PointerLocationView.java +++ b/core/java/com/android/internal/widget/PointerLocationView.java @@ -25,6 +25,7 @@ import android.hardware.input.InputManager; import android.hardware.input.InputManager.InputDeviceListener; import android.os.SystemProperties; import android.util.Log; +import android.util.Slog; import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; @@ -630,6 +631,12 @@ public class PointerLocationView extends View implements InputDeviceListener, >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; // will be 0 for UP final int id = event.getPointerId(index); + if (id >= NP) { + Slog.wtf(TAG, "Got pointer ID out of bounds: id=" + id + " arraysize=" + + NP + " pointerindex=" + index + + " action=0x" + Integer.toHexString(action)); + return; + } final PointerState ps = mPointers.get(id); ps.mCurDown = false;