diff options
author | Adrian Roos <roosa@google.com> | 2014-03-20 14:41:32 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-03-20 14:41:32 +0000 |
commit | c95f04c31bf14ea7f99b5a6a226ee00982946dfb (patch) | |
tree | b10e3f77b4eb428a50da8eb70e9faffa4d1eee7c | |
parent | c040b494b35c1070aa2300ddc86d31f274d90c5e (diff) | |
parent | c9f9fcc06e9d46d89900ad7cb8b6864d01b230e4 (diff) | |
download | android_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.java | 15 |
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 |