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

Commit a800d9b5 authored by Winson Chung's avatar Winson Chung
Browse files

Make sure recents animation input consumer is above the top task

- Now that we are animating multiple tasks together for staged split
  we need to ensure the layer is above the top most task

Bug: 195427335
Test: atest RecentsAnimationControllerTest
Change-Id: Ieb4b0b0de730a9b3ba3725955c5baac4c0f1c4c8
parent f38953d9
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -539,7 +539,8 @@ final class InputMonitor {
            if (mAddRecentsAnimationInputConsumerHandle && shouldApplyRecentsInputConsumer) {
                if (recentsAnimationController.updateInputConsumerForApp(
                        mRecentsAnimationInputConsumer.mWindowHandle)) {
                    mRecentsAnimationInputConsumer.show(mInputTransaction, w.mActivityRecord);
                    mRecentsAnimationInputConsumer.show(mInputTransaction,
                            recentsAnimationController.getHighestLayerTask());
                    mAddRecentsAnimationInputConsumerHandle = false;
                }
            }
+17 −0
Original line number Diff line number Diff line
@@ -1102,6 +1102,23 @@ public class RecentsAnimationController implements DeathRecipient {
        return mTargetActivityRecord.findMainWindow();
    }

    /**
     * Returns the task with the highest layer, or null if none is found.
     */
    public Task getHighestLayerTask() {
        int highestLayer = Integer.MIN_VALUE;
        Task highestLayerTask = null;
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
            TaskAnimationAdapter adapter = mPendingAnimations.get(i);
            int layer = adapter.mTask.getPrefixOrderIndex();
            if (layer > highestLayer) {
                highestLayer = layer;
                highestLayerTask = adapter.mTask;
            }
        }
        return highestLayerTask;
    }

    boolean isAnimatingTask(Task task) {
        for (int i = mPendingAnimations.size() - 1; i >= 0; i--) {
            if (task == mPendingAnimations.get(i).mTask) {