From ffdad1b38fe5d97bd242075d099e7a01dc439175 Mon Sep 17 00:00:00 2001 From: Alexander Martinz Date: Fri, 13 Apr 2018 18:29:50 +0200 Subject: PagedView: fix pointer index out of range Stacktrace: java.lang.IllegalArgumentException: pointerIndex out of range at android.view.MotionEvent.nativeGetAxisValue(MotionEvent.java) at android.view.MotionEvent.getX(MotionEvent.java:2201) at com.android.launcher3.PagedView.onTouchEvent(PagedView.java:1557) at android.view.View.dispatchTouchEvent(View.java:11842) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3068) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2700) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3074) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2714) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:464) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1854) at android.app.Activity.dispatchTouchEvent(Activity.java:3292) at com.android.launcher3.Launcher.dispatchTouchEvent(Launcher.java:2781) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:426) at android.view.View.dispatchPointerEvent(View.java:12092) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5279) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5084) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4634) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4600) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4747) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4608) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4804) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4634) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4600) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4608) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4581) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7259) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7233) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7176) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7431) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(MessageQueue.java) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:147) at android.app.ActivityThread.main(ActivityThread.java:6733) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845) Issue: SHIFTOS-SW-19 Change-Id: Idcab340d65ee2a4782052b4d1a9de73a886afef7 Signed-off-by: Alexander Martinz --- src/com/android/launcher3/PagedView.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 2eeb132..7a6e8ea 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1155,6 +1155,12 @@ public abstract class PagedView extends ViewGrou if (mIsBeingDragged) { final int activePointerId = mActivePointerId; final int pointerIndex = ev.findPointerIndex(activePointerId); + + if (pointerIndex == -1) { + onScrollInteractionEnd(); + return true; + } + final float x = ev.getX(pointerIndex); final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); -- cgit v0.11.2