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

Commit c5e80708 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Clear pending tasks after dispatching them." into main

parents 3a74c012 54e7b57d
Loading
Loading
Loading
Loading
+16 −8
Original line number Original line Diff line number Diff line
@@ -61,6 +61,7 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
            new HashMap<>();
            new HashMap<>();
    private final Map<Integer, ActivityManager.RunningTaskInfo> mPendingHiddenTasks =
    private final Map<Integer, ActivityManager.RunningTaskInfo> mPendingHiddenTasks =
            new HashMap<>();
            new HashMap<>();
    private IBinder mTransientTransition;


    public FreeformTaskTransitionObserver(
    public FreeformTaskTransitionObserver(
            ShellInit shellInit,
            ShellInit shellInit,
@@ -141,11 +142,9 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
                    break;
                    break;
                case WindowManager.TRANSIT_TO_BACK: {
                case WindowManager.TRANSIT_TO_BACK: {
                    if (info.getType() == TRANSIT_START_RECENTS_TRANSITION) {
                    if (info.getType() == TRANSIT_START_RECENTS_TRANSITION) {
                        // The tasks will be transiently hidden, which means they are still visible.
                        mTransientTransition = transition;
                        mPendingHiddenTasks.put(taskInfo.taskId, taskInfo);
                    } else {
                        onToBackTransitionReady(change, startT, finishT);
                    }
                    }
                    onToBackTransitionReady(change, startT, finishT);
                    break;
                    break;
                }
                }
                case WindowManager.TRANSIT_CLOSE: {
                case WindowManager.TRANSIT_CLOSE: {
@@ -204,8 +203,13 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
            TransitionInfo.Change change,
            TransitionInfo.Change change,
            SurfaceControl.Transaction startT,
            SurfaceControl.Transaction startT,
            SurfaceControl.Transaction finishT) {
            SurfaceControl.Transaction finishT) {
        if (mTransientTransition != null) {
            // The tasks will be transiently hidden, which means they are still visible.
            mPendingHiddenTasks.put(change.getTaskInfo().taskId, change.getTaskInfo());
        } else {
            mTaskChangeListener.ifPresent(
            mTaskChangeListener.ifPresent(
                    listener -> listener.onTaskMovingToBack(change.getTaskInfo()));
                    listener -> listener.onTaskMovingToBack(change.getTaskInfo()));
        }
        mWindowDecorViewModel.onTaskChanging(
        mWindowDecorViewModel.onTaskChanging(
                change.getTaskInfo(), change.getLeash(), startT, finishT);
                change.getTaskInfo(), change.getLeash(), startT, finishT);
    }
    }
@@ -259,8 +263,12 @@ public class FreeformTaskTransitionObserver implements Transitions.TransitionObs
            mWindowDecorViewModel.destroyWindowDecoration(taskInfo.get(i));
            mWindowDecorViewModel.destroyWindowDecoration(taskInfo.get(i));
        }
        }


        if (transition == mTransientTransition) {
            for (ActivityManager.RunningTaskInfo task : mPendingHiddenTasks.values()) {
            for (ActivityManager.RunningTaskInfo task : mPendingHiddenTasks.values()) {
                mTaskChangeListener.ifPresent(it -> it.onTaskMovingToBack(task));
                mTaskChangeListener.ifPresent(it -> it.onTaskMovingToBack(task));
            }
            }
            mPendingHiddenTasks.clear();
            mTransientTransition = null;
        }
    }
    }
}
}