diff options
| author | Nick Chameyev <nickchameyev@google.com> | 2022-05-03 11:17:15 +0000 |
|---|---|---|
| committer | Nick Chameyev <nickchameyev@google.com> | 2022-05-10 09:50:34 +0000 |
| commit | 0e1d4e23cb91ee650cdb161f2d6eca5d2df1aaad (patch) | |
| tree | d30f0429ea25513210b6268a22605a4ce4bee308 /core/java | |
| parent | c3565a503dc37bdc51d479bd07ae3fd77b8a87d3 (diff) | |
Synchronize display change with the Shell
This CL adds synchronization of applying of the window
container transaction with split-screen layout changes after
the display size change. This is needed for the unfold
animation to have the split screen layout ready
for the first frame of the unfold animation on foldable
devices.
The flow is similar to the display rotation synchonization,
now it is triggered on both physical display change and
rotation.
Bug: 204925795
Test: folding/unfolding, rotating with a split layout
when Shell transitions enabled/disabled
Change-Id: I30f391dae69cf38768daf49361660d87165f886d
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/IDisplayChangeWindowCallback.aidl (renamed from core/java/android/view/IDisplayWindowRotationCallback.aidl) | 10 | ||||
| -rw-r--r-- | core/java/android/view/IDisplayChangeWindowController.aidl (renamed from core/java/android/view/IDisplayWindowRotationController.aidl) | 24 | ||||
| -rw-r--r-- | core/java/android/view/IWindowManager.aidl | 4 |
3 files changed, 21 insertions, 17 deletions
diff --git a/core/java/android/view/IDisplayWindowRotationCallback.aidl b/core/java/android/view/IDisplayChangeWindowCallback.aidl index 1ffe2dde40f1..00a5b7b831ca 100644 --- a/core/java/android/view/IDisplayWindowRotationCallback.aidl +++ b/core/java/android/view/IDisplayChangeWindowCallback.aidl @@ -17,13 +17,15 @@ package android.view; import android.window.WindowContainerTransaction; +import android.window.DisplayAreaInfo; /** - * Interface to be invoked by the controller when it has finished preparing for a display rotation. + * Interface to be invoked by the controller when it has finished preparing for a display + * size change. * - * @see IDisplayWindowRotationController + * @see IDisplayChangeWindowController * @hide */ -interface IDisplayWindowRotationCallback { - void continueRotateDisplay(int targetRotation, in WindowContainerTransaction t); +interface IDisplayChangeWindowCallback { + void continueDisplayChange(in WindowContainerTransaction t); } diff --git a/core/java/android/view/IDisplayWindowRotationController.aidl b/core/java/android/view/IDisplayChangeWindowController.aidl index c1c7464c3168..8c0bb6a54528 100644 --- a/core/java/android/view/IDisplayWindowRotationController.aidl +++ b/core/java/android/view/IDisplayChangeWindowController.aidl @@ -16,11 +16,12 @@ package android.view; -import android.view.IDisplayWindowRotationCallback; +import android.view.IDisplayChangeWindowCallback; +import android.window.DisplayAreaInfo; /** - * Singular controller of a "remote" display rotation. When a display rotation is started, WM - * freezes the screen. It will then call into this controller and wait for a response via the + * Singular controller of a "remote" display change. When a display rotation or change is started, + * WM freezes the screen. It will then call into this controller and wait for a response via the * callback. * * This needs to provide configuration changes because those changes need to be applied in sync @@ -36,17 +37,18 @@ import android.view.IDisplayWindowRotationCallback; * * @hide */ -oneway interface IDisplayWindowRotationController { +oneway interface IDisplayChangeWindowController { /** - * Called when WM needs to know how to update tasks in response to a display rotation. - * If this isn't called, a timeout will continue the rotation in WM. + * Called when WM needs to know how to update tasks in response to a display change. + * If this isn't called, a timeout will continue the change in WM. * - * @param displayId the display that is rotating. - * @param fromRotation the rotation the display is rotating from. - * @param toRotation the rotation the display is rotating to. + * @param fromRotation the old rotation + * @param newRotation the new rotation + * @param newDisplayAreaInfo the new display area info after the change * @param callback A callback to be called when this has calculated updated configs. */ - void onRotateDisplay(int displayId, int fromRotation, int toRotation, - in IDisplayWindowRotationCallback callback); + void onDisplayChange(int displayId, int fromRotation, int toRotation, + in DisplayAreaInfo newDisplayAreaInfo, in IDisplayChangeWindowCallback callback); + } diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index ee49d7bf5c28..ebdb79ce19e8 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -40,7 +40,7 @@ import android.view.ICrossWindowBlurEnabledListener; import android.view.IDisplayWindowInsetsController; import android.view.IDisplayWindowListener; import android.view.IDisplayFoldListener; -import android.view.IDisplayWindowRotationController; +import android.view.IDisplayChangeWindowController; import android.view.IOnKeyguardExitResult; import android.view.IPinnedTaskListener; import android.view.IScrollCaptureResponseListener; @@ -146,7 +146,7 @@ interface IWindowManager * controller is called after the display has "frozen" for a rotation and display rotation will * only continue once the controller has finished calculating associated configurations. */ - void setDisplayWindowRotationController(IDisplayWindowRotationController controller); + void setDisplayChangeWindowController(IDisplayChangeWindowController controller); /** * Adds a root container that a client shell can populate with its own windows (usually via |
