diff options
author | John Reck <jreck@google.com> | 2011-11-10 09:19:55 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-10 09:19:55 -0800 |
commit | 843e04d977fd348ed474da1d3c6a62e7dc837444 (patch) | |
tree | 43cd95f18b288caa114c9941bafc20853e04bd40 /core | |
parent | 2375d16378e6f8b7694c5a2cd9e0622e382e6049 (diff) | |
parent | 5f1c549132150c85edfa8982c4da5c0fd41d8919 (diff) | |
download | frameworks_base-843e04d977fd348ed474da1d3c6a62e7dc837444.zip frameworks_base-843e04d977fd348ed474da1d3c6a62e7dc837444.tar.gz frameworks_base-843e04d977fd348ed474da1d3c6a62e7dc837444.tar.bz2 |
Merge "Pause drawing when not visible" into ics-mr1
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/webkit/WebView.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index c80994a..03d6511 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3254,6 +3254,26 @@ public class WebView extends AbsoluteLayout if (mHTML5VideoViewProxy != null) { mHTML5VideoViewProxy.pauseAndDispatch(); } + if (mNativeClass != 0) { + nativeSetPauseDrawing(mNativeClass, true); + } + } + } + + @Override + protected void onWindowVisibilityChanged(int visibility) { + super.onWindowVisibilityChanged(visibility); + updateDrawingState(); + } + + void updateDrawingState() { + if (mNativeClass == 0 || mIsPaused) return; + if (getWindowVisibility() != VISIBLE) { + nativeSetPauseDrawing(mNativeClass, true); + } else if (getVisibility() != VISIBLE) { + nativeSetPauseDrawing(mNativeClass, true); + } else { + nativeSetPauseDrawing(mNativeClass, false); } } @@ -3265,6 +3285,9 @@ public class WebView extends AbsoluteLayout if (mIsPaused) { mIsPaused = false; mWebViewCore.sendMessage(EventHub.ON_RESUME); + if (mNativeClass != 0) { + nativeSetPauseDrawing(mNativeClass, false); + } } } @@ -5599,6 +5622,7 @@ public class WebView extends AbsoluteLayout if (visibility != View.VISIBLE && mZoomManager != null) { mZoomManager.dismissZoomPicker(); } + updateDrawingState(); } /** @@ -8403,6 +8427,9 @@ public class WebView extends AbsoluteLayout setNewPicture(mDelaySetPicture, true); mDelaySetPicture = null; } + if (mIsPaused) { + nativeSetPauseDrawing(mNativeClass, true); + } break; case UPDATE_TEXTFIELD_TEXT_MSG_ID: // Make sure that the textfield is currently focused @@ -9581,4 +9608,5 @@ public class WebView extends AbsoluteLayout * See {@link ComponentCallbacks2} for the trim levels and descriptions */ private static native void nativeOnTrimMemory(int level); + private static native void nativeSetPauseDrawing(int instance, boolean pause); } |