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

Commit d12365c0 authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

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

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


+7 −2
Original line number Original line Diff line number Diff line
@@ -2501,13 +2501,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
        if (isOrganizedTaskFragment() && mDisplayContent != null
                && mDisplayContent.mChangingContainers.remove(this)) {
                && mDisplayContent.mChangingContainers.remove(this)) {
            mDisplayContent.mClosingChangingContainers.put(
            mDisplayContent.mClosingChangingContainers.put(
                    this, new Rect(mSurfaceFreezer.mFreezeBounds));
                    this, new Rect(mSurfaceFreezer.mFreezeBounds));
            return true;
        }
        }
        return false;
    }
    }


    @Override
    @Override
+6 −2
Original line number Original line 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
        // If we are losing visibility, then a snapshot isn't necessary and we are no-longer
        // part of a change transition.
        // part of a change transition.
        if (!visible) {
        if (!visible) {
            boolean skipUnfreeze = false;
            if (asTaskFragment() != null) {
            if (asTaskFragment() != null) {
                // If the organized TaskFragment is closing while resizing, we want to keep track of
                // 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.
                // 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
                // This should be called before unfreeze() because we record the starting bounds
                // in SurfaceFreezer.
                // in SurfaceFreezer.
                asTaskFragment().setClosingChangingStartBoundsIfNeeded();
                skipUnfreeze = asTaskFragment().setClosingChangingStartBoundsIfNeeded();
            }
            }

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