Continue layout if needed
Sometimes the operations in the deferLayout~continueLayout don't
change significant states related to layout.
This reduces 1~3 times performSurfacePlacement when switching between
activities. Also reduce lots of invocations when resizing task/stack.
Bounds change isn't a layout reason from activity aspect because there
are already many invocations from relayoutWindow, finishDrawingWindow
and animate that will request traversal.
Test: go/wm-smoke
Test: Enable debug log in WindowSurfacePlacer to observe the
invocation of performSurfacePlacement from continueLayout.
Bug: 140407614
Change-Id: I347f1fe1db676dcf320163bed0df693775b5f022
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index 422b6e5..d528ef6 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -182,7 +182,7 @@
return;
}
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "keyguardGoingAway");
- mWindowManager.deferSurfaceLayout();
+ mService.deferWindowLayout();
try {
setKeyguardGoingAway(true);
EventLog.writeEvent(EventLogTags.AM_SET_KEYGUARD_SHOWN,
@@ -204,7 +204,7 @@
mWindowManager.executeAppTransition();
} finally {
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "keyguardGoingAway: surfaceLayout");
- mWindowManager.continueSurfaceLayout();
+ mService.continueWindowLayout();
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
@@ -330,7 +330,7 @@
mWindowManager.onKeyguardOccludedChanged(isDisplayOccluded(DEFAULT_DISPLAY));
if (isKeyguardLocked()) {
- mWindowManager.deferSurfaceLayout();
+ mService.deferWindowLayout();
try {
mRootActivityContainer.getDefaultDisplay().mDisplayContent
.prepareAppTransition(resolveOccludeTransit(),
@@ -340,7 +340,7 @@
mRootActivityContainer.ensureActivitiesVisible(null, 0, !PRESERVE_WINDOWS);
mWindowManager.executeAppTransition();
} finally {
- mWindowManager.continueSurfaceLayout();
+ mService.continueWindowLayout();
}
}
dismissDockedStackIfNeeded();