diff options
author | John Reck <jreck@google.com> | 2012-03-16 14:18:44 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2012-03-16 14:18:44 -0700 |
commit | a5408e619a0d9f4b516d76ee053da05a5d94227d (patch) | |
tree | 53deb4af1581f1170464acbac3319f225264bc0d /core/java/android | |
parent | 4513bc0f28d210a970166f6ce35c3bbab1e49522 (diff) | |
download | frameworks_base-a5408e619a0d9f4b516d76ee053da05a5d94227d.zip frameworks_base-a5408e619a0d9f4b516d76ee053da05a5d94227d.tar.gz frameworks_base-a5408e619a0d9f4b516d76ee053da05a5d94227d.tar.bz2 |
Pipe down isHardwareAccelerated
Change-Id: I19285ea03409279aea09f9e44a1870364762f877
Diffstat (limited to 'core/java/android')
-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 a561577..a541d76 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; @@ -1955,4 +1956,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 09ce1e2..2be9c9b 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -5561,6 +5561,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc addAccessibilityApisToJavaScript(); mTouchEventQueue.reset(); + updateHwAccelerated(); } @Override @@ -5580,6 +5581,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc } removeAccessibilityApisFromJavaScript(); + updateHwAccelerated(); } @Override @@ -9232,6 +9234,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 * @@ -9353,4 +9379,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 2e8ad6d..2333dd9 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; @@ -333,6 +334,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 { |