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

Commit a2249ac4 authored by Winson Chung's avatar Winson Chung
Browse files

Fixing rotation issues.

- Ensuring that we can update the stack bounds of non-docked stacks upon
  rotation while split screen is enabled (previously disabled)
- Fix issue where subsequent bounds calculations were using the animation
  target bounds from the prior orientation

Bug: 36657966
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: I810e35f907721ef5c781b914adac3273ea8da5c8
parent 474662da
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2252,9 +2252,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
            return;
        }

        if (!allowResizeInDockedMode && getStack(DOCKED_STACK_ID) != null) {
            // If the docked stack exist we don't allow resizes of stacks not caused by the docked
            // stack size changing so things don't get out of sync.
        if (!allowResizeInDockedMode && !StackId.tasksAreFloating(stackId) &&
                getStack(DOCKED_STACK_ID) != null) {
            // If the docked stack exists, don't resize non-floating stacks independently of the
            // size computed from the docked stack size (otherwise they will be out of sync)
            return;
        }

+6 −1
Original line number Diff line number Diff line
@@ -340,7 +340,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
     * @return the source bounds for the bounds animation.
     */
    void getAnimatingSourceBounds(Rect outBounds) {
        if (mBoundsAnimationSourceBounds != null) {
        if (!mBoundsAnimationSourceBounds.isEmpty()) {
            outBounds.set(mBoundsAnimationSourceBounds);
            return;
        }
@@ -419,6 +419,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
            // we can just update and return them here
            setBounds(mBounds);
            mBoundsAfterRotation.set(mBounds);

            // Once we've set the bounds based on the rotation of the old bounds in the new
            // orientation, clear the animation target bounds since they are obsolete
            mBoundsAnimationTarget.setEmpty();
            mBoundsAnimationSourceBounds.setEmpty();
            return true;
        }