Fixes OOM bitmap crash.
Change-Id: Ied0293b7f1dbfe16c3517dbb9e2b19c8030d31a5
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index c3be486..c71234b 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2465,7 +2465,10 @@
Canvas canvas = new Canvas(sThumbnailBitmap);
canvas.drawBitmap(viewportBitmap, srcRect, dstRect, new Paint(Paint.FILTER_BITMAP_FLAG));
-
+ if (viewportBitmap != null) {
+ viewportBitmap.recycle();
+ viewportBitmap = null;
+ }
return sThumbnailBitmap;
}
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index b5d0a38..7ae9bf7 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -572,6 +572,10 @@
mTitle.setImageBitmap(mTitleBarBitmap);
mTitle.setVisibility(View.VISIBLE);
// SWE: WebView.draw() wouldn't draw anything if SurfaceView is enabled.
+ if (mContentBitmap != null) {
+ mContentBitmap.recycle();
+ mContentBitmap = null;
+ }
mContentBitmap = web.getViewportBitmap();
if (mContentBitmap == null) {
int h = web.getHeight() - embTbarHeight;
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 786e376..b951306 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1396,6 +1396,14 @@
* Destroy the tab's main WebView and subWindow if any
*/
void destroy() {
+ if (mScreenShot != null) {
+ mScreenShot.recycle();
+ mScreenShot = null;
+ }
+ if (mCapture != null ) {
+ mCapture.recycle();
+ mCapture = null;
+ }
if (mPostponeDestroy) {
mShouldDestroy = true;
return;
@@ -2024,6 +2032,10 @@
int state = c.save();
float scale = 0;
Bitmap screenShot = mMainView.getViewportBitmap();
+ if (mScreenShot != null) {
+ mScreenShot.recycle();
+ mScreenShot = null;
+ }
mScreenShot = screenShot;
if (screenShot != null) {
//scale based on device orientation