Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2182)

Unified Diff: android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java

Issue 15795002: Cache auxiliary bitmap across draw frames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bo & kaan comments Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java
diff --git a/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java b/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java
index d4e79c82254e6fd7d9471c49156913afbf9f2f78..7abf59c380b0107e5693bbb41422f3d413b2d570 100644
--- a/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java
+++ b/android_webview/java/src/org/chromium/android_webview/JavaBrowserViewRendererHelper.java
@@ -11,6 +11,9 @@ import android.graphics.Picture;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
+import org.chromium.content.common.TraceEvent;
+
+import java.lang.ref.SoftReference;
/**
* Provides auxiliary methods related to Picture objects and native SkPictures.
@@ -18,12 +21,29 @@ import org.chromium.base.JNINamespace;
@JNINamespace("android_webview")
public class JavaBrowserViewRendererHelper {
+ private static SoftReference<Bitmap> sCachedBitmap;
+
/**
* Provides a Bitmap object with a given width and height used for auxiliary rasterization.
*/
@CalledByNative
- private static Bitmap createBitmap(int width, int height) {
- return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ private static Bitmap createBitmap(int width, int height, boolean cacheResult) {
+ if (cacheResult && sCachedBitmap != null) {
+ Bitmap result = sCachedBitmap.get();
+ if (result != null) {
+ if (result.getWidth() == width && result.getHeight() == height) {
+ TraceEvent.instant("Reused cached bitmap");
+ return result;
+ }
+ result.recycle();
+ }
+ sCachedBitmap = null;
+ }
+ Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ if (cacheResult) {
+ sCachedBitmap = new SoftReference<Bitmap>(result);
+ }
+ return result;
}
/**

Powered by Google App Engine
This is Rietveld 408576698