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

Commit ecfa973f authored by Jeff Chang's avatar Jeff Chang Committed by Automerger Merge Worker
Browse files

Merge "Attempt to fix NPE when reparent to the original task." into sc-dev am: fe4efedb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14516704

Change-Id: If3f2b38c457c8e9179ea269886ecd603bafba9d2
parents f0f05520 fe4efedb
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -1837,12 +1837,16 @@ class Task extends WindowContainer<WindowContainer> {
        return autoRemoveRecents || (!hasChild() && !getHasBeenVisible());
    }

    /** Completely remove all activities associated with an existing task. */
    void performClearTask(String reason) {
    private void clearPinnedTaskIfNeed() {
        // The original task is to be removed, try remove also the pinned task.
        if (mChildPipActivity != null && mChildPipActivity.getTask() != null) {
            mTaskSupervisor.removeRootTask(mChildPipActivity.getTask());
        }
    }

    /** Completely remove all activities associated with an existing task. */
    void performClearTask(String reason) {
        clearPinnedTaskIfNeed();
        // Broken down into to cases to avoid object create due to capturing mStack.
        if (getRootTask() == null) {
            forAllActivities((r) -> {
@@ -3220,7 +3224,7 @@ class Task extends WindowContainer<WindowContainer> {
        mRemoving = true;

        EventLogTags.writeWmTaskRemoved(mTaskId, reason);

        clearPinnedTaskIfNeed();
        // If applicable let the TaskOrganizer know the Task is vanishing.
        setTaskOrganizer(null);

@@ -5439,6 +5443,7 @@ class Task extends WindowContainer<WindowContainer> {
                    // force hidden flag.
                    if (!isForceHidden()) {
                        final Task lastParentBeforePip = topActivity.getLastParentBeforePip();
                        if (lastParentBeforePip.isAttached()) {
                            topActivity.reparent(lastParentBeforePip,
                                    lastParentBeforePip.getChildCount() /* top */,
                                    "movePinnedActivityToOriginalTask");
@@ -5446,6 +5451,7 @@ class Task extends WindowContainer<WindowContainer> {
                        }
                    }
                }
            }

            if (creating) {
                // Nothing else to do if we don't have a window container yet. E.g. call from ctor.