diff options
author | 2010-06-02 15:46:13 -0700 | |
---|---|---|
committer | 2010-06-02 15:46:13 -0700 | |
commit | ca583f0966f891efda4710074c15795d99b9d9ba (patch) | |
tree | aa77fc316f59d1a6bdd0639c5eca35d1619f3224 | |
parent | 169af47b0076457854cc0f92d6b015195837686d (diff) | |
parent | d28f4be870ea8850a2d4a2fe51333643f16b9ab1 (diff) |
Merge "Fixed some minor bugs in MotionEvent recycling." into kraken
-rw-r--r-- | core/java/android/view/MotionEvent.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java index d648e96693c7..eefbf7a1a3b3 100644 --- a/core/java/android/view/MotionEvent.java +++ b/core/java/android/view/MotionEvent.java @@ -255,17 +255,19 @@ public final class MotionEvent implements Parcelable { } static private MotionEvent obtain() { + final MotionEvent ev; synchronized (gRecyclerLock) { if (gRecyclerTop == null) { return new MotionEvent(); } - MotionEvent ev = gRecyclerTop; + ev = gRecyclerTop; gRecyclerTop = ev.mNext; gRecyclerUsed--; - ev.mRecycledLocation = null; - ev.mRecycled = false; - return ev; } + ev.mRecycledLocation = null; + ev.mRecycled = false; + ev.mNext = null; + return ev; } /** @@ -620,11 +622,14 @@ public final class MotionEvent implements Parcelable { throw new RuntimeException(toString() + " recycled twice!", mRecycledLocation); } mRecycledLocation = new RuntimeException("Last recycled here"); - } else if (mRecycled) { - throw new RuntimeException(toString() + " recycled twice!"); + //Log.w("MotionEvent", "Recycling event " + this, mRecycledLocation); + } else { + if (mRecycled) { + throw new RuntimeException(toString() + " recycled twice!"); + } + mRecycled = true; } - //Log.w("MotionEvent", "Recycling event " + this, mRecycledLocation); synchronized (gRecyclerLock) { if (gRecyclerUsed < MAX_RECYCLED) { gRecyclerUsed++; |