diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/InputMonitor.java | 22 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/RecentsAnimationController.java | 3 |
2 files changed, 12 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index 1b1898b76506..efcd61df5c75 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -469,8 +469,12 @@ final class InputMonitor { public void accept(WindowState w) { final InputChannel inputChannel = w.mInputChannel; final InputWindowHandle inputWindowHandle = w.mInputWindowHandle; + final RecentsAnimationController recentsAnimationController = + mService.getRecentsAnimationController(); + final boolean shouldApplyRecentsInputConsumer = recentsAnimationController != null + && recentsAnimationController.shouldApplyInputConsumer(w.mActivityRecord); if (inputChannel == null || inputWindowHandle == null || w.mRemoved - || w.cantReceiveTouchInput()) { + || (w.cantReceiveTouchInput() && !shouldApplyRecentsInputConsumer)) { if (w.mWinAnimator.hasSurface()) { mInputTransaction.setInputWindowInfo( w.mWinAnimator.mSurfaceController.getClientViewRootSurface(), @@ -486,22 +490,16 @@ final class InputMonitor { final boolean hasFocus = w.isFocused(); final boolean isVisible = w.isVisibleLw(); - if (mAddRecentsAnimationInputConsumerHandle) { - final RecentsAnimationController recentsAnimationController = - mService.getRecentsAnimationController(); - if (recentsAnimationController != null - && recentsAnimationController.shouldApplyInputConsumer(w.mActivityRecord)) { - if (recentsAnimationController.updateInputConsumerForApp( - mRecentsAnimationInputConsumer.mWindowHandle, hasFocus)) { - mRecentsAnimationInputConsumer.show(mInputTransaction, w); - mAddRecentsAnimationInputConsumerHandle = false; - } + if (mAddRecentsAnimationInputConsumerHandle && shouldApplyRecentsInputConsumer) { + if (recentsAnimationController.updateInputConsumerForApp( + mRecentsAnimationInputConsumer.mWindowHandle, hasFocus)) { + mRecentsAnimationInputConsumer.show(mInputTransaction, w); + mAddRecentsAnimationInputConsumerHandle = false; } } if (w.inPinnedWindowingMode()) { if (mAddPipInputConsumerHandle) { - final Task rootTask = w.getTask().getRootTask(); mPipInputConsumer.mWindowHandle.replaceTouchableRegionWithCrop( rootTask.getSurfaceControl()); diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java index d6ddcd0cc9f9..cbc1bdfa0e9e 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimationController.java +++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java @@ -799,7 +799,8 @@ public class RecentsAnimationController implements DeathRecipient { // Only apply the input consumer if it is enabled, it is not the target (home/recents) // being revealed with the transition, and we are actively animating the app as a part of // the animation - return mInputConsumerEnabled && !isTargetApp(activity) && isAnimatingApp(activity); + return mInputConsumerEnabled && activity != null + && !isTargetApp(activity) && isAnimatingApp(activity); } boolean updateInputConsumerForApp(InputWindowHandle inputWindowHandle, |