diff options
author | Adam Powell <adamp@google.com> | 2010-02-19 14:15:19 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-02-19 14:15:19 -0800 |
commit | 32637cf9fd71096becb4f43bde56e9137b8187e4 (patch) | |
tree | 20cba8f4b355e299f2cfeb1e074cf19db3ecf57f /core/java | |
parent | bf31ed256a058310df657b072c685d60f48923d0 (diff) | |
parent | 45f2ca7f7d9fac55aa228e022f46ecbac8712a15 (diff) | |
download | frameworks_base-32637cf9fd71096becb4f43bde56e9137b8187e4.zip frameworks_base-32637cf9fd71096becb4f43bde56e9137b8187e4.tar.gz frameworks_base-32637cf9fd71096becb4f43bde56e9137b8187e4.tar.bz2 |
Merge "Recycle MotionEvents properly in GestureDetector"
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/GestureDetector.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java index 58f998e..c1e1049 100644 --- a/core/java/android/view/GestureDetector.java +++ b/core/java/android/view/GestureDetector.java @@ -494,6 +494,9 @@ public class GestureDetector { mLastMotionX = x; mLastMotionY = y; + if (mCurrentDownEvent != null) { + mCurrentDownEvent.recycle(); + } mCurrentDownEvent = MotionEvent.obtain(ev); mAlwaysInTapRegion = true; mAlwaysInBiggerTapRegion = true; @@ -562,10 +565,14 @@ public class GestureDetector { if ((Math.abs(velocityY) > mMinimumFlingVelocity) || (Math.abs(velocityX) > mMinimumFlingVelocity)){ - handled = mListener.onFling(mCurrentDownEvent, currentUpEvent, velocityX, velocityY); + handled = mListener.onFling(mCurrentDownEvent, ev, velocityX, velocityY); } } - mPreviousUpEvent = MotionEvent.obtain(ev); + if (mPreviousUpEvent != null) { + mPreviousUpEvent.recycle(); + } + // Hold the event we obtained above - listeners may have changed the original. + mPreviousUpEvent = currentUpEvent; mVelocityTracker.recycle(); mVelocityTracker = null; mIsDoubleTapping = false; |