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

Commit b0c38e22 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:...

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

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

Change-Id: I8c0d69687dd53ec0bf2b624e9fb677230475b8d0
parents 4e3a5c89 ecfa973f
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.