summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2011-07-29 12:34:32 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-29 12:34:32 -0700
commitecfeebebfff639ba4b66a334bd46dc37b1ab25da (patch)
treee70e98ba0028fd466f6d529941d1d9d0b59eef5b
parenta66754356f2b50e3a3a57676e7de9eecfdcc4fc8 (diff)
parent1d335f30f208223a70ec3e38a881f509d0c0b5d8 (diff)
downloadframeworks_base-ecfeebebfff639ba4b66a334bd46dc37b1ab25da.zip
frameworks_base-ecfeebebfff639ba4b66a334bd46dc37b1ab25da.tar.gz
frameworks_base-ecfeebebfff639ba4b66a334bd46dc37b1ab25da.tar.bz2
Merge "Add a runtime switch between Raster and Ganesh rendering modes."
-rw-r--r--core/java/android/webkit/WebSettings.java21
-rw-r--r--core/java/android/webkit/WebView.java12
2 files changed, 32 insertions, 1 deletions
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index d584acd..642aa22 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -179,6 +179,7 @@ public class WebSettings {
private boolean mBlockNetworkImage = false;
private boolean mBlockNetworkLoads;
private boolean mJavaScriptEnabled = false;
+ private boolean mHardwareAccelSkia = false;
private boolean mShowVisualIndicator = false;
private PluginState mPluginState = PluginState.OFF;
private boolean mJavaScriptCanOpenWindowsAutomatically = false;
@@ -1243,6 +1244,26 @@ public class WebSettings {
}
/**
+ * Tell the WebView to use Skia's hardware accelerated rendering path
+ * @param flag True if the WebView should use Skia's hw-accel path
+ * @hide
+ */
+ public synchronized void setHardwareAccelSkiaEnabled(boolean flag) {
+ if (mHardwareAccelSkia != flag) {
+ mHardwareAccelSkia = flag;
+ postSync();
+ }
+ }
+
+ /**
+ * @return True if the WebView is using hardware accelerated skia
+ * @hide
+ */
+ public synchronized boolean getHardwareAccelSkiaEnabled() {
+ return mHardwareAccelSkia;
+ }
+
+ /**
* Tell the WebView to show the visual indicator
* @param flag True if the WebView should show the visual indicator
* @hide
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 5946ae4..f4fd551 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -625,6 +625,9 @@ public class WebView extends AbsoluteLayout
// If we are using a set picture, don't send view updates to webkit
private boolean mBlockWebkitViewMessages = false;
+ // cached value used to determine if we need to switch drawing models
+ private boolean mHardwareAccelSkia = false;
+
/*
* Private message ids
*/
@@ -4394,6 +4397,12 @@ public class WebView extends AbsoluteLayout
int functor = nativeGetDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport,
mGLViewportEmpty ? null : mViewRectViewport, getScale(), extras);
((HardwareCanvas) canvas).callDrawGLFunction(functor);
+
+ if (mHardwareAccelSkia != getSettings().getHardwareAccelSkiaEnabled()) {
+ mHardwareAccelSkia = getSettings().getHardwareAccelSkiaEnabled();
+ nativeUseHardwareAccelSkia(mHardwareAccelSkia);
+ }
+
} else {
DrawFilter df = null;
if (mZoomManager.isZoomAnimating() || UIAnimationsRunning) {
@@ -9252,7 +9261,8 @@ public class WebView extends AbsoluteLayout
static final int NO_LEFTEDGE = -1;
native int nativeGetBlockLeftEdge(int x, int y, float scale);
- private native void nativeSetExpandedTileBounds(boolean enabled);
+ private native void nativeSetExpandedTileBounds(boolean enabled);
+ private native void nativeUseHardwareAccelSkia(boolean enabled);
// Returns a pointer to the scrollable LayerAndroid at the given point.
private native int nativeScrollableLayer(int x, int y, Rect scrollRect,