diff options
| author | 2012-03-20 10:01:55 -0700 | |
|---|---|---|
| committer | 2012-03-20 10:01:55 -0700 | |
| commit | 3a382b58c89090a0051a58a8255e681f7266835d (patch) | |
| tree | 3f117999946cda53bdbb014812567155c700aee0 | |
| parent | 146786800480ba322fca71d150e19a48fc980cdd (diff) | |
| parent | a5408e619a0d9f4b516d76ee053da05a5d94227d (diff) | |
Merge "Pipe down isHardwareAccelerated"
| -rw-r--r-- | core/java/android/webkit/WebView.java | 7 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewClassic.java | 28 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewProvider.java | 3 |
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 { |