diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index f2e6abcaade9b..fa4d27c68f5aa 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -47,6 +47,8 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import static com.android.server.wm.WindowManagerService.LOGTAG_INPUT_FOCUS; +import static java.lang.Integer.MAX_VALUE; + import android.annotation.Nullable; import android.graphics.Rect; import android.graphics.Region; @@ -580,10 +582,11 @@ final class InputMonitor { if (mAddRecentsAnimationInputConsumerHandle && shouldApplyRecentsInputConsumer) { if (recentsAnimationController.updateInputConsumerForApp( mRecentsAnimationInputConsumer.mWindowHandle)) { - final WindowState highestLayerWindow = - recentsAnimationController.getHighestLayerWindow(); - if (highestLayerWindow != null) { - mRecentsAnimationInputConsumer.show(mInputTransaction, highestLayerWindow); + final DisplayArea targetDA = + recentsAnimationController.getTargetAppDisplayArea(); + if (targetDA != null) { + mRecentsAnimationInputConsumer.reparent(mInputTransaction, targetDA); + mRecentsAnimationInputConsumer.show(mInputTransaction, MAX_VALUE - 1); mAddRecentsAnimationInputConsumerHandle = false; } } @@ -596,7 +599,7 @@ final class InputMonitor { rootTask.getSurfaceControl()); // We set the layer to z=MAX-1 so that it's always on top. mPipInputConsumer.reparent(mInputTransaction, rootTask); - mPipInputConsumer.show(mInputTransaction, Integer.MAX_VALUE - 1); + mPipInputConsumer.show(mInputTransaction, MAX_VALUE - 1); mAddPipInputConsumerHandle = false; } } diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index 03ff06c9d7f12..a663c62b40e58 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -1125,21 +1125,11 @@ public class RecentsAnimationController implements DeathRecipient { return mTargetActivityRecord.findMainWindow(); } - /** - * Returns the window with the highest layer, or null if none is found. - */ - public WindowState getHighestLayerWindow() { - 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; - } + DisplayArea getTargetAppDisplayArea() { + if (mTargetActivityRecord == null) { + return null; } - return highestLayerTask.getTopMostActivity().getTopChild(); + return mTargetActivityRecord.getDisplayArea(); } boolean isAnimatingTask(Task task) {