summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author John Reck <jreck@google.com> 2012-03-20 10:01:55 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-03-20 10:01:55 -0700
commit3a382b58c89090a0051a58a8255e681f7266835d (patch)
tree3f117999946cda53bdbb014812567155c700aee0
parent146786800480ba322fca71d150e19a48fc980cdd (diff)
parenta5408e619a0d9f4b516d76ee053da05a5d94227d (diff)
Merge "Pipe down isHardwareAccelerated"
-rw-r--r--core/java/android/webkit/WebView.java7
-rw-r--r--core/java/android/webkit/WebViewClassic.java28
-rw-r--r--core/java/android/webkit/WebViewProvider.java3
3 files changed, 38 insertions, 0 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 5e094161a848..dd373de6cf6f 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
+import android.graphics.Paint;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -1980,4 +1981,10 @@ public class WebView extends AbsoluteLayout
public void setBackgroundColor(int color) {
mProvider.getViewDelegate().setBackgroundColor(color);
}
+
+ @Override
+ public void setLayerType(int layerType, Paint paint) {
+ super.setLayerType(layerType, paint);
+ mProvider.getViewDelegate().setLayerType(layerType, paint);
+ }
}
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index d4fea8352a27..d83594726987 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -5638,6 +5638,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
addAccessibilityApisToJavaScript();
mTouchEventQueue.reset();
+ updateHwAccelerated();
}
@Override
@@ -5657,6 +5658,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
removeAccessibilityApisFromJavaScript();
+ updateHwAccelerated();
}
@Override
@@ -9360,6 +9362,30 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
nativeDiscardAllTextures();
}
+ @Override
+ public void setLayerType(int layerType, Paint paint) {
+ updateHwAccelerated();
+ }
+
+ private void updateHwAccelerated() {
+ if (mNativeClass == 0) {
+ return;
+ }
+ boolean hwAccelerated = false;
+ if (mWebView.isHardwareAccelerated()
+ && mWebView.getLayerType() != View.LAYER_TYPE_SOFTWARE) {
+ hwAccelerated = true;
+ }
+ int result = nativeSetHwAccelerated(mNativeClass, hwAccelerated);
+ if (mWebViewCore == null || mBlockWebkitViewMessages) {
+ return;
+ }
+ if (result == 1) {
+ // Sync layers
+ mWebViewCore.layersDraw();
+ }
+ }
+
/**
* Begin collecting per-tile profiling data
*
@@ -9481,4 +9507,6 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
private static native boolean nativeIsBaseFirst(int instance);
private static native void nativeMapLayerRect(int instance, int layerId,
Rect rect);
+ // Returns 1 if a layer sync is needed, else 0
+ private static native int nativeSetHwAccelerated(int instance, boolean hwAccelerated);
}
diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java
index 9016fbceeac2..7d47e14183b8 100644
--- a/core/java/android/webkit/WebViewProvider.java
+++ b/core/java/android/webkit/WebViewProvider.java
@@ -19,6 +19,7 @@ package android.webkit;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
+import android.graphics.Paint;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -337,6 +338,8 @@ public interface WebViewProvider {
public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate);
public void setBackgroundColor(int color);
+
+ public void setLayerType(int layerType, Paint paint);
}
interface ScrollDelegate {