Loading services/core/java/com/android/server/wm/ActivityRecord.java +4 −0 Original line number Diff line number Diff line Loading @@ -7710,6 +7710,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // This activity may relaunch or perform configuration change so once it has reported drawn, // the screen can be unfrozen. ensureActivityConfiguration(0 /* globalChanges */, !PRESERVE_WINDOWS); if (mTransitionController.isCollecting(this)) { // In case the task was changed from PiP but still keeps old transform. task.resetSurfaceControlTransforms(); } } void setRequestedOrientation(int requestedOrientation) { Loading services/core/java/com/android/server/wm/DisplayContent.java +14 −6 Original line number Diff line number Diff line Loading @@ -3334,6 +3334,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (!controller.isCollecting(this)) { controller.collect(this); startAsyncRotationIfNeeded(); if (mFixedRotationLaunchingApp != null) { setSeamlessTransitionForFixedRotation(controller.getCollectingTransition()); } } return; } Loading @@ -3343,12 +3346,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY); if (mFixedRotationLaunchingApp != null) { // A fixed-rotation transition is done, then continue to start a seamless display // transition. And be fore the start transaction is applied, the non-app windows // need to keep in previous rotation to avoid showing inconsistent content. t.setSeamlessRotation(this); if (mAsyncRotationController != null) { mAsyncRotationController.keepAppearanceInPreviousRotation(); } // transition. setSeamlessTransitionForFixedRotation(t); } else if (isRotationChanging()) { if (displayChange != null) { final boolean seamless = mDisplayRotation.shouldRotateSeamlessly( Loading @@ -3367,6 +3366,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } private void setSeamlessTransitionForFixedRotation(Transition t) { t.setSeamlessRotation(this); // Before the start transaction is applied, the non-app windows need to keep in previous // rotation to avoid showing inconsistent content. if (mAsyncRotationController != null) { mAsyncRotationController.keepAppearanceInPreviousRotation(); } } /** If the display is in transition, there should be a screenshot covering it. */ @Override boolean inTransition() { Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +4 −0 Original line number Diff line number Diff line Loading @@ -7710,6 +7710,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // This activity may relaunch or perform configuration change so once it has reported drawn, // the screen can be unfrozen. ensureActivityConfiguration(0 /* globalChanges */, !PRESERVE_WINDOWS); if (mTransitionController.isCollecting(this)) { // In case the task was changed from PiP but still keeps old transform. task.resetSurfaceControlTransforms(); } } void setRequestedOrientation(int requestedOrientation) { Loading
services/core/java/com/android/server/wm/DisplayContent.java +14 −6 Original line number Diff line number Diff line Loading @@ -3334,6 +3334,9 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (!controller.isCollecting(this)) { controller.collect(this); startAsyncRotationIfNeeded(); if (mFixedRotationLaunchingApp != null) { setSeamlessTransitionForFixedRotation(controller.getCollectingTransition()); } } return; } Loading @@ -3343,12 +3346,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY); if (mFixedRotationLaunchingApp != null) { // A fixed-rotation transition is done, then continue to start a seamless display // transition. And be fore the start transaction is applied, the non-app windows // need to keep in previous rotation to avoid showing inconsistent content. t.setSeamlessRotation(this); if (mAsyncRotationController != null) { mAsyncRotationController.keepAppearanceInPreviousRotation(); } // transition. setSeamlessTransitionForFixedRotation(t); } else if (isRotationChanging()) { if (displayChange != null) { final boolean seamless = mDisplayRotation.shouldRotateSeamlessly( Loading @@ -3367,6 +3366,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } private void setSeamlessTransitionForFixedRotation(Transition t) { t.setSeamlessRotation(this); // Before the start transaction is applied, the non-app windows need to keep in previous // rotation to avoid showing inconsistent content. if (mAsyncRotationController != null) { mAsyncRotationController.keepAppearanceInPreviousRotation(); } } /** If the display is in transition, there should be a screenshot covering it. */ @Override boolean inTransition() { Loading