diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/Images.cpp | 4 | ||||
-rw-r--r-- | tools/aidl/aidl.cpp | 2 | ||||
-rw-r--r-- | tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java | 74 |
3 files changed, 47 insertions, 33 deletions
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp index edb12ea..0a4c68b 100644 --- a/tools/aapt/Images.cpp +++ b/tools/aapt/Images.cpp @@ -332,8 +332,8 @@ static status_t do_9patch(const char* imageName, image_info* image) int H = image->height; int i, j; - int maxSizeXDivs = (W / 2 + 1) * sizeof(int32_t); - int maxSizeYDivs = (H / 2 + 1) * sizeof(int32_t); + int maxSizeXDivs = W * sizeof(int32_t); + int maxSizeYDivs = H * sizeof(int32_t); int32_t* xDivs = (int32_t*) malloc(maxSizeXDivs); int32_t* yDivs = (int32_t*) malloc(maxSizeYDivs); uint8_t numXDivs = 0; diff --git a/tools/aidl/aidl.cpp b/tools/aidl/aidl.cpp index dc61567..e248763 100644 --- a/tools/aidl/aidl.cpp +++ b/tools/aidl/aidl.cpp @@ -617,7 +617,7 @@ parse_preprocessed_file(const string& filename) FILE* f = fopen(filename.c_str(), "rb"); if (f == NULL) { - fprintf(stderr, "aidl: can't open preprocessd file: %s\n", + fprintf(stderr, "aidl: can't open preprocessed file: %s\n", filename.c_str()); return 1; } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java index 6abc452d..47a7ec0 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java @@ -56,6 +56,7 @@ import android.view.View.MeasureSpec; import android.view.WindowManager.LayoutParams; import android.widget.FrameLayout; +import java.lang.ref.SoftReference; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Collection; @@ -94,14 +95,15 @@ public final class Bridge implements ILayoutBridge { private final static Map<String, Map<String, Integer>> sRFullMap = new HashMap<String, Map<String,Integer>>(); - private final static Map<Object, Map<String, Bitmap>> sProjectBitmapCache = - new HashMap<Object, Map<String, Bitmap>>(); - private final static Map<Object, Map<String, NinePatch>> sProject9PatchCache = - new HashMap<Object, Map<String, NinePatch>>(); - - private final static Map<String, Bitmap> sFrameworkBitmapCache = new HashMap<String, Bitmap>(); - private final static Map<String, NinePatch> sFramework9PatchCache = - new HashMap<String, NinePatch>(); + private final static Map<Object, Map<String, SoftReference<Bitmap>>> sProjectBitmapCache = + new HashMap<Object, Map<String, SoftReference<Bitmap>>>(); + private final static Map<Object, Map<String, SoftReference<NinePatch>>> sProject9PatchCache = + new HashMap<Object, Map<String, SoftReference<NinePatch>>>(); + + private final static Map<String, SoftReference<Bitmap>> sFrameworkBitmapCache = + new HashMap<String, SoftReference<Bitmap>>(); + private final static Map<String, SoftReference<NinePatch>> sFramework9PatchCache = + new HashMap<String, SoftReference<NinePatch>>(); private static Map<String, Map<String, Integer>> sEnumValueMap; @@ -717,15 +719,21 @@ public final class Bridge implements ILayoutBridge { */ static Bitmap getCachedBitmap(String value, Object projectKey) { if (projectKey != null) { - Map<String, Bitmap> map = sProjectBitmapCache.get(projectKey); + Map<String, SoftReference<Bitmap>> map = sProjectBitmapCache.get(projectKey); if (map != null) { - return map.get(value); + SoftReference<Bitmap> ref = map.get(value); + if (ref != null) { + return ref.get(); + } + } + } else { + SoftReference<Bitmap> ref = sFrameworkBitmapCache.get(value); + if (ref != null) { + return ref.get(); } - - return null; } - - return sFrameworkBitmapCache.get(value); + + return null; } /** @@ -736,17 +744,17 @@ public final class Bridge implements ILayoutBridge { */ static void setCachedBitmap(String value, Bitmap bmp, Object projectKey) { if (projectKey != null) { - Map<String, Bitmap> map = sProjectBitmapCache.get(projectKey); + Map<String, SoftReference<Bitmap>> map = sProjectBitmapCache.get(projectKey); if (map == null) { - map = new HashMap<String, Bitmap>(); + map = new HashMap<String, SoftReference<Bitmap>>(); sProjectBitmapCache.put(projectKey, map); } - map.put(value, bmp); + map.put(value, new SoftReference<Bitmap>(bmp)); + } else { + sFrameworkBitmapCache.put(value, new SoftReference<Bitmap>(bmp)); } - - sFrameworkBitmapCache.put(value, bmp); } /** @@ -758,16 +766,22 @@ public final class Bridge implements ILayoutBridge { */ static NinePatch getCached9Patch(String value, Object projectKey) { if (projectKey != null) { - Map<String, NinePatch> map = sProject9PatchCache.get(projectKey); + Map<String, SoftReference<NinePatch>> map = sProject9PatchCache.get(projectKey); if (map != null) { - return map.get(value); + SoftReference<NinePatch> ref = map.get(value); + if (ref != null) { + return ref.get(); + } + } + } else { + SoftReference<NinePatch> ref = sFramework9PatchCache.get(value); + if (ref != null) { + return ref.get(); } - - return null; } - return sFramework9PatchCache.get(value); + return null; } /** @@ -778,19 +792,19 @@ public final class Bridge implements ILayoutBridge { */ static void setCached9Patch(String value, NinePatch ninePatch, Object projectKey) { if (projectKey != null) { - Map<String, NinePatch> map = sProject9PatchCache.get(projectKey); + Map<String, SoftReference<NinePatch>> map = sProject9PatchCache.get(projectKey); if (map == null) { - map = new HashMap<String, NinePatch>(); + map = new HashMap<String, SoftReference<NinePatch>>(); sProject9PatchCache.put(projectKey, map); } - map.put(value, ninePatch); + map.put(value, new SoftReference<NinePatch>(ninePatch)); + } else { + sFramework9PatchCache.put(value, new SoftReference<NinePatch>(ninePatch)); } - - sFramework9PatchCache.put(value, ninePatch); } - + /** * Implementation of {@link IWindowSession} so that mSession is not null in * the {@link SurfaceView}. |