diff options
| author | Fabrice Di Meglio <fdimeglio@google.com> | 2013-04-19 11:03:28 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-19 11:03:28 -0700 |
| commit | 07fedf58dd6d6e4759f7dbe7a492e5318f1655cb (patch) | |
| tree | 1fce574210dfeb05219fabe429f1d2a5e9284549 /core/java/android | |
| parent | 78017d2e0fc81d1b07b26b358fe24b9af1d7d490 (diff) | |
| parent | b08aa2354ff3b1bd1c7d705b82a7c1e62674ee50 (diff) | |
| download | frameworks_base-07fedf58dd6d6e4759f7dbe7a492e5318f1655cb.zip frameworks_base-07fedf58dd6d6e4759f7dbe7a492e5318f1655cb.tar.gz frameworks_base-07fedf58dd6d6e4759f7dbe7a492e5318f1655cb.tar.bz2 | |
am b08aa235: Merge "Improve fix for bug #8159072 Spinner widget should be RTL\'ized" into jb-mr2-dev
* commit 'b08aa2354ff3b1bd1c7d705b82a7c1e62674ee50':
Improve fix for bug #8159072 Spinner widget should be RTL'ized
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/res/Resources.java | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index d64bff9..d8d5f2b 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -17,6 +17,7 @@ package android.content.res; import android.os.Trace; +import android.view.View; import com.android.internal.util.XmlUtils; import org.xmlpull.v1.XmlPullParser; @@ -80,16 +81,16 @@ public class Resources { private static final Object sSync = new Object(); /*package*/ static Resources mSystem = null; - + // Information about preloaded resources. Note that they are not // protected by a lock, because while preloading in zygote we are all // single-threaded, and after that these are immutable. - private static final LongSparseArray<Drawable.ConstantState> sPreloadedDrawables + private static final LongSparseArray<Drawable.ConstantState>[] sPreloadedDrawables; + private static final LongSparseArray<Drawable.ConstantState> sPreloadedColorDrawables = new LongSparseArray<Drawable.ConstantState>(); private static final LongSparseArray<ColorStateList> sPreloadedColorStateLists = new LongSparseArray<ColorStateList>(); - private static final LongSparseArray<Drawable.ConstantState> sPreloadedColorDrawables - = new LongSparseArray<Drawable.ConstantState>(); + private static boolean sPreloaded; private static int sPreloadedDensity; @@ -120,6 +121,12 @@ public class Resources { private CompatibilityInfo mCompatibilityInfo; + static { + sPreloadedDrawables = new LongSparseArray[2]; + sPreloadedDrawables[0] = new LongSparseArray<Drawable.ConstantState>(); + sPreloadedDrawables[1] = new LongSparseArray<Drawable.ConstantState>(); + } + /** @hide */ public static int selectDefaultTheme(int curTheme, int targetSdkVersion) { return selectSystemTheme(curTheme, targetSdkVersion, @@ -1982,6 +1989,7 @@ public class Resources { ActivityInfo.CONFIG_LAYOUT_DIRECTION); private boolean verifyPreloadConfig(int changingConfigurations, int resourceId, String name) { + // We dont want to preloadd a Drawable when there is both a LTR and RTL version of it if (((changingConfigurations&~(ActivityInfo.CONFIG_FONT_SCALE | ActivityInfo.CONFIG_DENSITY)) & VARYING_CONFIGS) != 0) { String resName; @@ -1995,6 +2003,17 @@ public class Resources { + " (" + resName + ") that varies with configuration!!"); return false; } + if (TRACE_FOR_PRELOAD) { + String resName; + try { + resName = getResourceName(resourceId); + } catch (NotFoundException e) { + resName = "?"; + } + Log.w(TAG, "Preloading " + name + " resource #0x" + + Integer.toHexString(resourceId) + + " (" + resName + ")"); + } return true; } @@ -2022,11 +2041,11 @@ public class Resources { if (dr != null) { return dr; } - + final int layoutDirection = mConfiguration.getLayoutDirection(); Drawable.ConstantState cs = isColorDrawable ? sPreloadedColorDrawables.get(key) : (sPreloadedDensity == mConfiguration.densityDpi - ? sPreloadedDrawables.get(key) : null); + ? sPreloadedDrawables[layoutDirection].get(key) : null); if (cs != null) { dr = cs.newDrawable(this); } else { @@ -2100,11 +2119,12 @@ public class Resources { cs = dr.getConstantState(); if (cs != null) { if (mPreloading) { - if (verifyPreloadConfig(cs.getChangingConfigurations(), value.resourceId, "drawable")) { + if (verifyPreloadConfig(cs.getChangingConfigurations(), value.resourceId, + "drawable")) { if (isColorDrawable) { sPreloadedColorDrawables.put(key, cs); } else { - sPreloadedDrawables.put(key, cs); + sPreloadedDrawables[layoutDirection].put(key, cs); } } } else { |
