summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2010-02-19 14:15:19 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-19 14:15:19 -0800
commit32637cf9fd71096becb4f43bde56e9137b8187e4 (patch)
tree20cba8f4b355e299f2cfeb1e074cf19db3ecf57f /core/java
parentbf31ed256a058310df657b072c685d60f48923d0 (diff)
parent45f2ca7f7d9fac55aa228e022f46ecbac8712a15 (diff)
downloadframeworks_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.java11
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;