summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-03-20 14:41:32 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-03-20 14:41:32 +0000
commitc95f04c31bf14ea7f99b5a6a226ee00982946dfb (patch)
treeb10e3f77b4eb428a50da8eb70e9faffa4d1eee7c
parentc040b494b35c1070aa2300ddc86d31f274d90c5e (diff)
parentc9f9fcc06e9d46d89900ad7cb8b6864d01b230e4 (diff)
downloadandroid_packages_apps_Trebuchet-c95f04c31bf14ea7f99b5a6a226ee00982946dfb.tar.gz
android_packages_apps_Trebuchet-c95f04c31bf14ea7f99b5a6a226ee00982946dfb.tar.bz2
android_packages_apps_Trebuchet-c95f04c31bf14ea7f99b5a6a226ee00982946dfb.zip
am c9f9fcc0: am fa4c799a: Fix concurrent drawable usage resulting in native crash
* commit 'c9f9fcc06e9d46d89900ad7cb8b6864d01b230e4': Fix concurrent drawable usage resulting in native crash
-rw-r--r--src/com/android/launcher3/WidgetPreviewLoader.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java
index 1a67987b4..36152f807 100644
--- a/src/com/android/launcher3/WidgetPreviewLoader.java
+++ b/src/com/android/launcher3/WidgetPreviewLoader.java
@@ -15,6 +15,7 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
+import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
@@ -121,6 +122,7 @@ public class WidgetPreviewLoader {
private RectCache mCachedAppWidgetPreviewSrcRect = new RectCache();
private RectCache mCachedAppWidgetPreviewDestRect = new RectCache();
private PaintCache mCachedAppWidgetPreviewPaint = new PaintCache();
+ private PaintCache mDefaultAppWidgetPreviewPaint = new PaintCache();
private String mCachedSelectQuery;
private BitmapFactoryOptionsCache mCachedBitmapFactoryOptions = new BitmapFactoryOptionsCache();
@@ -521,9 +523,16 @@ public class WidgetPreviewLoader {
defaultPreview = Bitmap.createBitmap(previewWidth, previewHeight, Config.ARGB_8888);
final Canvas c = mCachedAppWidgetPreviewCanvas.get();
c.setBitmap(defaultPreview);
- previewDrawable.setBounds(0, 0, previewWidth, previewHeight);
- previewDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
- previewDrawable.draw(c);
+ Paint p = mDefaultAppWidgetPreviewPaint.get();
+ if (p == null) {
+ p = new Paint();
+ p.setShader(new BitmapShader(previewDrawable.getBitmap(),
+ Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));
+ mDefaultAppWidgetPreviewPaint.set(p);
+ }
+ final Rect dest = mCachedAppWidgetPreviewDestRect.get();
+ dest.set(0, 0, previewWidth, previewHeight);
+ c.drawRect(dest, p);
c.setBitmap(null);
// Draw the icon in the top left corner