summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rob Carr <racarr@google.com> 2015-12-09 20:53:05 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-12-09 20:53:05 +0000
commite37925187889c0bf0d79f6adffbcb953ed02fc0c (patch)
tree83ec857cf6efb7cd26b431aac58347298298f5f2
parent5e7033702a14e5e58fbfe9ff95c38551f0f23d40 (diff)
parent0df9b0f4ec369b6fb373e0b7cbebed153af66ea7 (diff)
Merge "Prevent crash when manipulating hidden SurfaceView."
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java36
1 files changed, 21 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index dbbbb58f452d..0c606fefacb7 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -2534,26 +2534,32 @@ public class WindowManagerService extends IWindowManager.Stub
win.mAttrs.height = bottom - top;
win.setWindowScale(win.mRequestedWidth, win.mRequestedHeight);
- if (SHOW_TRANSACTIONS) {
- Slog.i(TAG_WM, ">>> OPEN TRANSACTION repositionChild");
- }
+ if (win.mHasSurface) {
+ if (SHOW_TRANSACTIONS) {
+ Slog.i(TAG_WM, ">>> OPEN TRANSACTION repositionChild");
+ }
- SurfaceControl.openTransaction();
+ SurfaceControl.openTransaction();
- win.applyGravityAndUpdateFrame();
- win.mWinAnimator.computeShownFrameLocked();
+ try {
- win.mWinAnimator.setSurfaceBoundariesLocked(false);
+ win.applyGravityAndUpdateFrame();
+ win.mWinAnimator.computeShownFrameLocked();
- if (deferTransactionUntilFrame > 0) {
- win.mWinAnimator.mSurfaceController.deferTransactionUntil(
- win.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
- deferTransactionUntilFrame);
- }
+ win.mWinAnimator.setSurfaceBoundariesLocked(false);
- SurfaceControl.closeTransaction();
- if (SHOW_TRANSACTIONS) {
- Slog.i(TAG_WM, "<<< CLOSE TRANSACTION repositionChild");
+ if (deferTransactionUntilFrame > 0) {
+ win.mWinAnimator.mSurfaceController.deferTransactionUntil(
+ win.mAttachedWindow.mWinAnimator.mSurfaceController.getHandle(),
+ deferTransactionUntilFrame);
+ }
+
+ } finally {
+ SurfaceControl.closeTransaction();
+ if (SHOW_TRANSACTIONS) {
+ Slog.i(TAG_WM, "<<< CLOSE TRANSACTION repositionChild");
+ }
+ }
}
outFrame = win.mCompatFrame;