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

Commit 49abc7fa authored by Jerry Chang's avatar Jerry Chang
Browse files

Dispatch organized tasks info chagne when committing visibility

Make sure to traverse all organized parent tasks when dispatching task
info chagned after committing activity visibility. Remove queuing task
info changed in Task#ensureActivitiesVisible because it is not actually
committing activity visibility.

Fix: 200139190
Test: pass existing tests
Test: manual check the repro steps in bug
Change-Id: I869dfa85c4e488e20b4dc7aa1a77d258362081b6
parent f950ee68
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -4938,11 +4938,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        // dispatchTaskInfoChangedIfNeeded() right after ActivityRecord#setVisibility() can report
        // the stale visible state, because the state will be updated after the app transition.
        // So tries to report the actual visible state again where the state is changed.
        if (!mTaskSupervisor.inActivityVisibilityUpdate()) {
            final Task task = getOrganizedTask();
            if (task != null) {
        Task task = getOrganizedTask();
        while (task != null) {
            task.dispatchTaskInfoChangedIfNeeded(false /* force */);
            }
            task = task.getParent().asTask();
        }
        ProtoLog.v(WM_DEBUG_APP_TRANSITIONS,
                "commitVisibility: %s: visible=%b mVisibleRequested=%b", this,
+0 −4
Original line number Diff line number Diff line
@@ -4809,10 +4809,6 @@ class Task extends TaskFragment {
                        notifyClients);
            }, true /* traverseTopToBottom */);

            // Notify WM shell that task visibilities may have changed
            forAllTasks(task -> task.dispatchTaskInfoChangedIfNeeded(/* force */ false),
                    true /* traverseTopToBottom */);

            if (mTranslucentActivityWaiting != null &&
                    mUndrawnActivitiesBelowTopTranslucent.isEmpty()) {
                // Nothing is getting drawn or everything was already visible, don't wait for