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

Commit f6930d4f 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: Ie04eb0bcb0cd542677798ec52aa59f3cb773f3bb
parents a810df1a 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.