diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index 87c7441387975..622c49e67967b 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -1452,6 +1452,11 @@ public class InputManagerService extends IInputManager.Stub nativeSetFocusedDisplay(mPtr, displayId); } + /** Clean up input window handles of the given display. */ + public void onDisplayRemoved(int displayId) { + nativeSetInputWindows(mPtr, null /* windowHandles */, displayId); + } + @Override public void requestPointerCapture(IBinder windowToken, boolean enabled) { if (mFocusedWindow == null || mFocusedWindow.asBinder() != windowToken) { diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index 3c5d911903e74..2a9c2b01ece60 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -168,6 +168,7 @@ final class InputMonitor { void onDisplayRemoved() { mHandler.removeCallbacks(mUpdateInputWindows); + mService.mInputManager.onDisplayRemoved(mDisplayId); mDisplayRemoved = true; }