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

Commit 8cc83cc4 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Fix black screen while animating a closing and changing TF" into tm-qpr-dev

parents b7fff582 d19ad2aa
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -215,6 +215,8 @@ class TaskFragmentAnimationRunner extends IRemoteAnimationRunner.Stub {
            } else {
                closingTargets.add(target);
                closingWholeScreenBounds.union(target.screenSpaceBounds);
                // Union the start bounds since this may be the ClosingChanging animation.
                closingWholeScreenBounds.union(target.startBounds);
            }
        }

+7 −2
Original line number Diff line number Diff line
@@ -2498,13 +2498,18 @@ class TaskFragment extends WindowContainer<WindowContainer> {
        }
    }

    /** Records the starting bounds of the closing organized TaskFragment. */
    void setClosingChangingStartBoundsIfNeeded() {
    /**
     * Returns {@code true} if the starting bounds of the closing organized TaskFragment is
     * recorded. Otherwise, return {@code false}.
     */
    boolean setClosingChangingStartBoundsIfNeeded() {
        if (isOrganizedTaskFragment() && mDisplayContent != null
                && mDisplayContent.mChangingContainers.remove(this)) {
            mDisplayContent.mClosingChangingContainers.put(
                    this, new Rect(mSurfaceFreezer.mFreezeBounds));
            return true;
        }
        return false;
    }

    @Override
+6 −2
Original line number Diff line number Diff line
@@ -1299,15 +1299,19 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        // If we are losing visibility, then a snapshot isn't necessary and we are no-longer
        // part of a change transition.
        if (!visible) {
            boolean skipUnfreeze = false;
            if (asTaskFragment() != null) {
                // If the organized TaskFragment is closing while resizing, we want to keep track of
                // its starting bounds to make sure the animation starts at the correct position.
                // This should be called before unfreeze() because we record the starting bounds
                // in SurfaceFreezer.
                asTaskFragment().setClosingChangingStartBoundsIfNeeded();
                skipUnfreeze = asTaskFragment().setClosingChangingStartBoundsIfNeeded();
            }

            if (!skipUnfreeze) {
                mSurfaceFreezer.unfreeze(getSyncTransaction());
            }
        }
        WindowContainer parent = getParent();
        if (parent != null) {
            parent.onChildVisibilityRequested(visible);