Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90cffa4b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Collect tasks when windowing mode of parent display changes" into tm-qpr-dev am: cbef171d

parents c236b057 cbef171d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -549,7 +549,7 @@ public class DisplayRotation {
            // Go through all tasks and collect them before the rotation
            // TODO(shell-transitions): move collect() to onConfigurationChange once wallpaper
            //       handling is synchronized.
            mDisplayContent.mTransitionController.collectForDisplayChange(mDisplayContent,
            mDisplayContent.mTransitionController.collectForDisplayAreaChange(mDisplayContent,
                    null /* use collecting transition */);
        }
        mService.mAtmService.deferWindowLayout();
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ public class PhysicalDisplaySwitchTransitionLauncher {

        if (t != null) {
            mDisplayContent.mAtmService.startLaunchPowerMode(POWER_MODE_REASON_CHANGE_DISPLAY);
            mTransitionController.collectForDisplayChange(mDisplayContent, t);
            mTransitionController.collectForDisplayAreaChange(mDisplayContent, t);
            mTransition = t;
        }
    }
+11 −8
Original line number Diff line number Diff line
@@ -460,24 +460,27 @@ class TransitionController {
     * 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.
     */
    void collectForDisplayChange(@NonNull DisplayContent dc, @Nullable Transition incoming) {
    void collectForDisplayAreaChange(@NonNull DisplayArea<?> wc, @Nullable Transition incoming) {
        if (incoming == null) incoming = mCollectingTransition;
        if (incoming == null) return;
        final Transition transition = incoming;
        // Collect all visible tasks.
        dc.forAllLeafTasks(task -> {
        wc.forAllLeafTasks(task -> {
            if (task.isVisible()) {
                transition.collect(task);
            }
        }, true /* traverseTopToBottom */);
        // Collect all visible non-app windows which need to be drawn before the animation starts.
        dc.forAllWindows(w -> {
        final DisplayContent dc = wc.asDisplayContent();
        if (dc != null) {
            wc.forAllWindows(w -> {
                if (w.mActivityRecord == null && w.isVisible() && !isCollecting(w.mToken)
                        && dc.shouldSyncRotationChange(w)) {
                    transition.collect(w.mToken);
                }
            }, true /* traverseTopToBottom */);
        }
    }

    /** @see Transition#mStatusBarTransitionDelay */
    void setStatusBarTransitionDelay(long delay) {
+10 −1
Original line number Diff line number Diff line
@@ -397,7 +397,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
                    // Go through all tasks and collect them before the rotation
                    // TODO(shell-transitions): move collect() to onConfigurationChange once
                    //       wallpaper handling is synchronized.
                    dc.mTransitionController.collectForDisplayChange(dc, transition);
                    dc.mTransitionController.collectForDisplayAreaChange(dc, transition);
                    dc.sendNewConfiguration();
                    effects |= TRANSACT_EFFECTS_LIFECYCLE;
                }
@@ -421,6 +421,15 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
                    addToSyncSet(syncId, 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()
                        & WindowContainerTransaction.Change.CHANGE_FORCE_NO_PIP) != 0) {