diff options
author | Romain Guy <romainguy@google.com> | 2011-08-01 14:01:37 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2011-08-01 14:01:37 -0700 |
commit | e5ea4403ce58982522554b7ff23f41e6551923c1 (patch) | |
tree | fdd29f7008b0125d7f87b52c26b40a3b66e760b7 /core/java/android/text/MeasuredText.java | |
parent | 704972acef57141e708561d803201c0adb55a2d6 (diff) | |
download | frameworks_base-e5ea4403ce58982522554b7ff23f41e6551923c1.zip frameworks_base-e5ea4403ce58982522554b7ff23f41e6551923c1.tar.gz frameworks_base-e5ea4403ce58982522554b7ff23f41e6551923c1.tar.bz2 |
Plug memory leak in EditText.
Change-Id: I0b42c23ceeaa958d02255945c35ff6807c177114
Diffstat (limited to 'core/java/android/text/MeasuredText.java')
-rw-r--r-- | core/java/android/text/MeasuredText.java | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java index 2920ac5..c184c11 100644 --- a/core/java/android/text/MeasuredText.java +++ b/core/java/android/text/MeasuredText.java @@ -29,14 +29,15 @@ import com.android.internal.util.ArrayUtils; */ class MeasuredText { private static final boolean localLOGV = false; - /* package */ CharSequence mText; - /* package */ int mTextStart; - /* package */ float[] mWidths; - /* package */ char[] mChars; - /* package */ byte[] mLevels; - /* package */ int mDir; - /* package */ boolean mEasy; - /* package */ int mLen; + CharSequence mText; + int mTextStart; + float[] mWidths; + char[] mChars; + byte[] mLevels; + int mDir; + boolean mEasy; + int mLen; + private int mPos; private TextPaint mWorkPaint; @@ -44,16 +45,16 @@ class MeasuredText { mWorkPaint = new TextPaint(); } - private static MeasuredText[] cached = new MeasuredText[3]; + private static final Object[] sLock = new Object[0]; + private static MeasuredText[] sCached = new MeasuredText[3]; - /* package */ static MeasuredText obtain() { MeasuredText mt; - synchronized (cached) { - for (int i = cached.length; --i >= 0;) { - if (cached[i] != null) { - mt = cached[i]; - cached[i] = null; + synchronized (sLock) { + for (int i = sCached.length; --i >= 0;) { + if (sCached[i] != null) { + mt = sCached[i]; + sCached[i] = null; return mt; } } @@ -65,14 +66,14 @@ class MeasuredText { return mt; } - /* package */ static MeasuredText recycle(MeasuredText mt) { mt.mText = null; if (mt.mLen < 1000) { - synchronized(cached) { - for (int i = 0; i < cached.length; ++i) { - if (cached[i] == null) { - cached[i] = mt; + synchronized(sLock) { + for (int i = 0; i < sCached.length; ++i) { + if (sCached[i] == null) { + sCached[i] = mt; + mt.mText = null; break; } } @@ -84,7 +85,6 @@ class MeasuredText { /** * Analyzes text for bidirectional runs. Allocates working buffers. */ - /* package */ void setPara(CharSequence text, int start, int end, TextDirectionHeuristic textDir) { mText = text; mTextStart = start; |