diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index e1f85446de7bb..404863af800f3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7717,14 +7717,19 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void syncInputTransactions() { - waitForAnimationsToComplete(); + long token = Binder.clearCallingIdentity(); + try { + waitForAnimationsToComplete(); - synchronized (mGlobalLock) { - mWindowPlacerLocked.performSurfacePlacementIfScheduled(); - mRoot.forAllDisplays(displayContent -> + synchronized (mGlobalLock) { + mWindowPlacerLocked.performSurfacePlacementIfScheduled(); + mRoot.forAllDisplays(displayContent -> displayContent.getInputMonitor().updateInputWindowsImmediately()); + } + new SurfaceControl.Transaction().syncInputWindows().apply(true); + } finally { + Binder.restoreCallingIdentity(token); } - new SurfaceControl.Transaction().syncInputWindows().apply(true); } private void waitForAnimationsToComplete() {