From a64da3fbd252ba7a7d9ddc554b051dd644ffdae7 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 30 Jul 2014 12:18:13 +0300 Subject: Cache the parsed drawables. Change-Id: I4a386c644505ac84a5ddd15a898c3e9c58e682b3 Reviewed-by: J-P Nurmi --- .../org/qtproject/qt5/android/ExtractStyle.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/android') diff --git a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java index b92d309dd6..cc7fc505ee 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java +++ b/src/android/jar/src/org/qtproject/qt5/android/ExtractStyle.java @@ -48,6 +48,7 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; @@ -792,8 +793,28 @@ public class ExtractStyle { } } + class DrawableCache + { + public DrawableCache(JSONObject json, Object drawable) + { + object = json; + this.drawable = drawable; + } + JSONObject object; + Object drawable; + } + private HashMap m_drawableCache = new HashMap(); + public JSONObject getDrawable(Object drawable, String filename) { + DrawableCache dc = m_drawableCache.get(filename); + if (dc != null) + { + if (dc.drawable.equals(drawable)) + return dc.object; + else + Log.e(QtNative.QtTAG, "Different drawable objects points to the same file name \"" + filename +"\""); + } JSONObject json = new JSONObject(); Bitmap bmp; if (drawable instanceof Bitmap) @@ -909,6 +930,7 @@ public class ExtractStyle { json.put("path", filename); json.put("width", bmp.getWidth()); json.put("height", bmp.getHeight()); + m_drawableCache.put(filename, new DrawableCache(json, drawable)); // MinistroActivity.nativeChmode(filename, 0644); } catch (JSONException e) { e.printStackTrace(); -- cgit v1.2.3