diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-08-02 16:37:58 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2011-08-02 16:37:58 -0700 |
commit | 6311d0a079702b29984c0d31937345be105e1a5e (patch) | |
tree | c9d5ebf9e2d1f6685220fe2e31ad8a4e21366a11 | |
parent | 7374d9728bd0e8847bab723608ebab3542e8157e (diff) | |
download | frameworks_base-6311d0a079702b29984c0d31937345be105e1a5e.zip frameworks_base-6311d0a079702b29984c0d31937345be105e1a5e.tar.gz frameworks_base-6311d0a079702b29984c0d31937345be105e1a5e.tar.bz2 |
Clear the bitmap from the canvas in a lot of places.
Change-Id: I6b2071ac7b348c473b9bdd1b972d095aebbb4fb3
15 files changed, 23 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 8931675..c566104 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -2503,6 +2503,7 @@ public final class ActivityThread { mAvailThumbnailBitmap = thumbnail; thumbnail = null; } + cv.setBitmap(null); } } catch (Exception e) { diff --git a/core/java/android/app/LauncherActivity.java b/core/java/android/app/LauncherActivity.java index 7b9bd60..8eb9ba4 100644 --- a/core/java/android/app/LauncherActivity.java +++ b/core/java/android/app/LauncherActivity.java @@ -314,6 +314,7 @@ public abstract class LauncherActivity extends ListActivity { icon.draw(canvas); icon.setBounds(mOldBounds); icon = new BitmapDrawable(getResources(), thumb); + canvas.setBitmap(null); } else if (iconWidth < width && iconHeight < height) { final Bitmap.Config c = Bitmap.Config.ARGB_8888; final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c); @@ -326,6 +327,7 @@ public abstract class LauncherActivity extends ListActivity { icon.draw(canvas); icon.setBounds(mOldBounds); icon = new BitmapDrawable(getResources(), thumb); + canvas.setBitmap(null); } } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 935281a..ad76928 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -10221,6 +10221,7 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit } canvas.restoreToCount(restoreCount); + canvas.setBitmap(null); if (attachInfo != null) { // Restore the cached Canvas for our siblings @@ -10289,9 +10290,9 @@ public class View implements Drawable.Callback2, KeyEvent.Callback, Accessibilit mPrivateFlags = flags; canvas.restoreToCount(restoreCount); + canvas.setBitmap(null); if (attachInfo != null) { - canvas.setBitmap(null); // Restore the cached Canvas for our siblings attachInfo.mCanvas = canvas; } diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java index 96e550e..65e72c9 100644 --- a/core/java/android/view/ViewDebug.java +++ b/core/java/android/view/ViewDebug.java @@ -1094,6 +1094,9 @@ public class ViewDebug { } public void post(Object... data) { + if (data[1] != null) { + ((Canvas) data[1]).setBitmap(null); + } if (data[0] != null) { ((Bitmap) data[0]).recycle(); } diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java index c4ba7c8..4b08f2d 100644 --- a/core/java/android/widget/StackView.java +++ b/core/java/android/widget/StackView.java @@ -1406,6 +1406,7 @@ public class StackView extends AdapterViewAnimator { v.setTranslationX(translationX); drawOutline(mCanvas, bitmap); + mCanvas.setBitmap(null); return bitmap; } @@ -1417,6 +1418,7 @@ public class StackView extends AdapterViewAnimator { dest.drawColor(0, PorterDuff.Mode.CLEAR); dest.setMatrix(mIdentityMatrix); dest.drawBitmap(mask, xy[0], xy[1], mHolographicPaint); + mMaskCanvas.setBitmap(null); mask.recycle(); } } diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index 40d54bb..3fc6463 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -567,6 +567,7 @@ public final class Bitmap implements Parcelable { canvas.setBitmap(bitmap); canvas.drawBitmap(source, srcR, dstR, paint); + canvas.setBitmap(null); return bitmap; } diff --git a/media/java/android/media/ThumbnailUtils.java b/media/java/android/media/ThumbnailUtils.java index 7c181ee..078d4af 100644 --- a/media/java/android/media/ThumbnailUtils.java +++ b/media/java/android/media/ThumbnailUtils.java @@ -387,6 +387,7 @@ public class ThumbnailUtils { if (recycle) { source.recycle(); } + c.setBitmap(null); return b2; } float bitmapWidthF = source.getWidth(); diff --git a/media/java/android/media/videoeditor/MediaArtistNativeHelper.java b/media/java/android/media/videoeditor/MediaArtistNativeHelper.java index 6b0fb12..5bfdcdb 100644 --- a/media/java/android/media/videoeditor/MediaArtistNativeHelper.java +++ b/media/java/android/media/videoeditor/MediaArtistNativeHelper.java @@ -3761,6 +3761,7 @@ class MediaArtistNativeHelper { final Canvas canvas = new Canvas(bitmap); canvas.drawBitmap(tempBitmap, new Rect(0, 0, newWidth, newHeight), new Rect(0, 0, width, height), sResizePaint); + canvas.setBitmap(null); } if (tempBitmap != null) { @@ -3837,6 +3838,7 @@ class MediaArtistNativeHelper { final Canvas canvas = new Canvas(bitmaps[i]); canvas.drawBitmap(tempBitmap, new Rect(0, 0, newWidth, newHeight), new Rect(0, 0, width, height), sResizePaint); + canvas.setBitmap(null); } } diff --git a/media/java/android/media/videoeditor/MediaImageItem.java b/media/java/android/media/videoeditor/MediaImageItem.java index 73cc7e2..f0cc1fe 100755 --- a/media/java/android/media/videoeditor/MediaImageItem.java +++ b/media/java/android/media/videoeditor/MediaImageItem.java @@ -1008,6 +1008,7 @@ public class MediaImageItem extends MediaItem { srcBitmap.getHeight()), new Rect(0, 0, (int)bitmapWidth, (int)bitmapHeight), sResizePaint); + canvas.setBitmap(null); /** * Release the source bitmap */ diff --git a/media/java/android/media/videoeditor/OverlayFrame.java b/media/java/android/media/videoeditor/OverlayFrame.java index 131f5f0..d159df2 100755 --- a/media/java/android/media/videoeditor/OverlayFrame.java +++ b/media/java/android/media/videoeditor/OverlayFrame.java @@ -420,6 +420,7 @@ public class OverlayFrame extends Overlay { } overlayCanvas.drawBitmap(overlayBitmap, srcRect, destRect, sResizePaint); + overlayCanvas.setBitmap(null); /* * Write to the dest file diff --git a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java index c896046..d74b548 100644 --- a/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/recent/RecentsPanelView.java @@ -501,6 +501,7 @@ public class RecentsPanelView extends RelativeLayout new RectF(mGlowBitmapPaddingLeftPx, mGlowBitmapPaddingTopPx, outBitmap.getWidth() - mGlowBitmapPaddingRightPx, outBitmap.getHeight() - mGlowBitmapPaddingBottomPx), paint); + canvas.setBitmap(null); } return outBitmap; } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index 3a47e6e..fc21929 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -294,6 +294,7 @@ class GlobalScreenshot { c.rotate(360f - degrees); c.translate(-dims[0] / 2, -dims[1] / 2); c.drawBitmap(mScreenBitmap, 0, 0, null); + c.setBitmap(null); mScreenBitmap = ss; } diff --git a/policy/src/com/android/internal/policy/impl/IconUtilities.java b/policy/src/com/android/internal/policy/impl/IconUtilities.java index 99055cf..4564f90 100644 --- a/policy/src/com/android/internal/policy/impl/IconUtilities.java +++ b/policy/src/com/android/internal/policy/impl/IconUtilities.java @@ -186,6 +186,7 @@ final class IconUtilities { mask.recycle(); dest.drawBitmap(src, 0, 0, mPaint); + dest.setBitmap(null); return result; } diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java index 9cb772e..ecbad09 100644 --- a/services/java/com/android/server/connectivity/Vpn.java +++ b/services/java/com/android/server/connectivity/Vpn.java @@ -183,7 +183,9 @@ public class Vpn extends INetworkManagementEventObserver.Stub { android.R.dimen.notification_large_icon_height); icon.setBounds(0, 0, width, height); bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - icon.draw(new Canvas(bitmap)); + Canvas c = new Canvas(bitmap); + icon.draw(c); + c.setBitmap(null); } // Configure the interface. Abort if any of these steps fails. diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index f8059f5..e0b5e17 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -4919,6 +4919,7 @@ public class WindowManagerService extends IWindowManager.Stub matrix.postTranslate(-(int)(frame.left*scale), -(int)(frame.top*scale)); Canvas canvas = new Canvas(bm); canvas.drawBitmap(rawss, matrix, null); + canvas.setBitmap(null); rawss.recycle(); return bm; |