diff options
| author | 2011-08-25 15:13:39 -0700 | |
|---|---|---|
| committer | 2011-08-25 15:13:39 -0700 | |
| commit | 412be650371f63da229eb5ba4045e8e35bd59afb (patch) | |
| tree | f93e74125de68f1a757433107c55ff45acff7b3f | |
| parent | 6f7588850b2b1dd4a96584bad889bd4b51112c98 (diff) | |
| parent | 58d94af5395c5d72b7f284837cf33ff59f3e18ed (diff) | |
Merge "actually pause webkit thread, remove costly invalidate"
| -rw-r--r-- | core/java/android/webkit/WebView.java | 5 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewCore.java | 13 |
2 files changed, 10 insertions, 8 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 5d776fd7dfd6..8c3c212fa0d1 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3451,6 +3451,7 @@ public class WebView extends AbsoluteLayout } abortAnimation(); mPrivateHandler.removeMessages(RESUME_WEBCORE_PRIORITY); + nativeSetIsScrolling(false); if (!mBlockWebkitViewMessages) { WebViewCore.resumePriority(); if (!mSelectingText) { @@ -6382,6 +6383,8 @@ public class WebView extends AbsoluteLayout WebViewCore.reducePriority(); // to get better performance, pause updating the picture WebViewCore.pauseUpdatePicture(mWebViewCore); + nativeSetIsScrolling(true); + if (!mDragFromTextInput) { nativeHideCursor(); } @@ -6478,6 +6481,7 @@ public class WebView extends AbsoluteLayout || mTouchMode == TOUCH_DRAG_LAYER_MODE) && !mSelectingText) { WebViewCore.resumePriority(); WebViewCore.resumeUpdatePicture(mWebViewCore); + nativeSetIsScrolling(false); } mPrivateHandler.removeMessages(SWITCH_TO_SHORTPRESS); mPrivateHandler.removeMessages(SWITCH_TO_LONGPRESS); @@ -9277,6 +9281,7 @@ public class WebView extends AbsoluteLayout * @return True if the layer is successfully scrolled. */ private native boolean nativeScrollLayer(int layer, int newX, int newY); + private native void nativeSetIsScrolling(boolean isScrolling); private native int nativeGetBackgroundColor(); native boolean nativeSetProperty(String key, String value); native String nativeGetProperty(String key); diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 400cdbd44f4e..fe07a76230a2 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -2070,10 +2070,8 @@ public final class WebViewCore { if (!core.getSettings().enableSmoothTransition()) return; synchronized (core) { + core.nativeSetIsPaused(true); core.mDrawIsPaused = true; - if (core.mDrawIsScheduled) { - core.mEventHub.removeMessages(EventHub.WEBKIT_DRAW); - } } } @@ -2082,15 +2080,14 @@ public final class WebViewCore { static void resumeUpdatePicture(WebViewCore core) { if (core != null) { // if mDrawIsPaused is true, ignore the setting, continue to resume - if (!core.mDrawIsPaused - && !core.getSettings().enableSmoothTransition()) return; + if (!core.mDrawIsPaused) + return; synchronized (core) { + core.nativeSetIsPaused(false); core.mDrawIsPaused = false; // always redraw on resume to reenable gif animations core.mDrawIsScheduled = false; - core.nativeContentInvalidateAll(); - core.contentDraw(); } } } @@ -2127,7 +2124,6 @@ public final class WebViewCore { // only fire an event if this is our first request if (mDrawIsScheduled) return; mDrawIsScheduled = true; - if (mDrawIsPaused) return; mEventHub.sendMessage(Message.obtain(null, EventHub.WEBKIT_DRAW)); } } @@ -2789,6 +2785,7 @@ public final class WebViewCore { return mDeviceOrientationService; } + private native void nativeSetIsPaused(boolean isPaused); private native void nativePause(); private native void nativeResume(); private native void nativeFreeMemory(); |