Merge "Collect tasks when windowing mode of parent display changes" into tm-qpr-dev am: cbef171d2f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19250773 Change-Id: I436066095f58b20da500b8a06dad02568658a97d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -549,7 +549,7 @@ public class DisplayRotation {
|
|||||||
// Go through all tasks and collect them before the rotation
|
// Go through all tasks and collect them before the rotation
|
||||||
// TODO(shell-transitions): move collect() to onConfigurationChange once wallpaper
|
// TODO(shell-transitions): move collect() to onConfigurationChange once wallpaper
|
||||||
// handling is synchronized.
|
// handling is synchronized.
|
||||||
mDisplayContent.mTransitionController.collectForDisplayChange(mDisplayContent,
|
mDisplayContent.mTransitionController.collectForDisplayAreaChange(mDisplayContent,
|
||||||
null /* use collecting transition */);
|
null /* use collecting transition */);
|
||||||
}
|
}
|
||||||
mService.mAtmService.deferWindowLayout();
|
mService.mAtmService.deferWindowLayout();
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class PhysicalDisplaySwitchTransitionLauncher {
|
|||||||
|
|
||||||
if (t != null) {
|
if (t != null) {
|
||||||
mDisplayContent.mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);
|
mDisplayContent.mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);
|
||||||
mTransitionController.collectForDisplayChange(mDisplayContent, t);
|
mTransitionController.collectForDisplayAreaChange(mDisplayContent, t);
|
||||||
mTransition = t;
|
mTransition = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -460,23 +460,26 @@ class TransitionController {
|
|||||||
* Collects the window containers which need to be synced with the changing display (e.g.
|
* Collects the window containers which need to be synced with the changing display (e.g.
|
||||||
* rotating) to the given transition or the current collecting transition.
|
* rotating) to the given transition or the current collecting transition.
|
||||||
*/
|
*/
|
||||||
void collectForDisplayChange(@NonNull DisplayContent dc, @Nullable Transition incoming) {
|
void collectForDisplayAreaChange(@NonNull DisplayArea<?> wc, @Nullable Transition incoming) {
|
||||||
if (incoming == null) incoming = mCollectingTransition;
|
if (incoming == null) incoming = mCollectingTransition;
|
||||||
if (incoming == null) return;
|
if (incoming == null) return;
|
||||||
final Transition transition = incoming;
|
final Transition transition = incoming;
|
||||||
// Collect all visible tasks.
|
// Collect all visible tasks.
|
||||||
dc.forAllLeafTasks(task -> {
|
wc.forAllLeafTasks(task -> {
|
||||||
if (task.isVisible()) {
|
if (task.isVisible()) {
|
||||||
transition.collect(task);
|
transition.collect(task);
|
||||||
}
|
}
|
||||||
}, true /* traverseTopToBottom */);
|
}, true /* traverseTopToBottom */);
|
||||||
// Collect all visible non-app windows which need to be drawn before the animation starts.
|
// Collect all visible non-app windows which need to be drawn before the animation starts.
|
||||||
dc.forAllWindows(w -> {
|
final DisplayContent dc = wc.asDisplayContent();
|
||||||
if (w.mActivityRecord == null && w.isVisible() && !isCollecting(w.mToken)
|
if (dc != null) {
|
||||||
&& dc.shouldSyncRotationChange(w)) {
|
wc.forAllWindows(w -> {
|
||||||
transition.collect(w.mToken);
|
if (w.mActivityRecord == null && w.isVisible() && !isCollecting(w.mToken)
|
||||||
}
|
&& dc.shouldSyncRotationChange(w)) {
|
||||||
}, true /* traverseTopToBottom */);
|
transition.collect(w.mToken);
|
||||||
|
}
|
||||||
|
}, true /* traverseTopToBottom */);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @see Transition#mStatusBarTransitionDelay */
|
/** @see Transition#mStatusBarTransitionDelay */
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
|
|||||||
// Go through all tasks and collect them before the rotation
|
// Go through all tasks and collect them before the rotation
|
||||||
// TODO(shell-transitions): move collect() to onConfigurationChange once
|
// TODO(shell-transitions): move collect() to onConfigurationChange once
|
||||||
// wallpaper handling is synchronized.
|
// wallpaper handling is synchronized.
|
||||||
dc.mTransitionController.collectForDisplayChange(dc, transition);
|
dc.mTransitionController.collectForDisplayAreaChange(dc, transition);
|
||||||
dc.sendNewConfiguration();
|
dc.sendNewConfiguration();
|
||||||
effects |= TRANSACT_EFFECTS_LIFECYCLE;
|
effects |= TRANSACT_EFFECTS_LIFECYCLE;
|
||||||
}
|
}
|
||||||
@@ -421,6 +421,15 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
|
|||||||
addToSyncSet(syncId, wc);
|
addToSyncSet(syncId, wc);
|
||||||
}
|
}
|
||||||
if (transition != null) transition.collect(wc);
|
if (transition != null) transition.collect(wc);
|
||||||
|
final DisplayArea da = wc.asDisplayArea();
|
||||||
|
// Only check DisplayArea here as a similar thing is done for DisplayContent above.
|
||||||
|
if (da != null && wc.asDisplayContent() == null
|
||||||
|
&& entry.getValue().getWindowingMode() != da.getWindowingMode()) {
|
||||||
|
// Go through all tasks and collect them before changing the windowing mode of a
|
||||||
|
// display-level container.
|
||||||
|
// TODO(shell-transitions): handle this more elegantly.
|
||||||
|
da.mTransitionController.collectForDisplayAreaChange(da, transition);
|
||||||
|
}
|
||||||
|
|
||||||
if ((entry.getValue().getChangeMask()
|
if ((entry.getValue().getChangeMask()
|
||||||
& WindowContainerTransaction.Change.CHANGE_FORCE_NO_PIP) != 0) {
|
& WindowContainerTransaction.Change.CHANGE_FORCE_NO_PIP) != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user