summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-03-14 21:26:18 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-03-14 21:26:18 +0000
commit5a0a5e7280f849a69c34cdb70e97a95d1fbcd026 (patch)
treeae8398e331feb64ecbc837ba1b057970634ab6a9
parent67244aeac25e34cf4c201729513e561fe2af64b8 (diff)
parent9d29030c0704f423f868aa6690243c7b60894555 (diff)
Merge "Only wait for animations to complete when injecting a DOWN event."
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java23
1 files changed, 18 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index b973ed598cac..a6c92571bc03 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -7472,13 +7472,26 @@ public class WindowManagerService extends IWindowManager.Stub
@Override
public boolean injectInputAfterTransactionsApplied(InputEvent ev, int mode) {
- waitForAnimationsToComplete();
-
- synchronized (mGlobalLock) {
- mWindowPlacerLocked.performSurfacePlacementIfScheduled();
+ boolean shouldWaitForAnimComplete = false;
+ if (ev instanceof KeyEvent) {
+ KeyEvent keyEvent = (KeyEvent) ev;
+ shouldWaitForAnimComplete = keyEvent.getSource() == InputDevice.SOURCE_MOUSE
+ || keyEvent.getAction() == KeyEvent.ACTION_DOWN;
+ } else if (ev instanceof MotionEvent) {
+ MotionEvent motionEvent = (MotionEvent) ev;
+ shouldWaitForAnimComplete = motionEvent.getSource() == InputDevice.SOURCE_MOUSE
+ || motionEvent.getAction() == MotionEvent.ACTION_DOWN;
}
- new SurfaceControl.Transaction().syncInputWindows().apply(true);
+ if (shouldWaitForAnimComplete) {
+ waitForAnimationsToComplete();
+
+ synchronized (mGlobalLock) {
+ mWindowPlacerLocked.performSurfacePlacementIfScheduled();
+ }
+
+ new SurfaceControl.Transaction().syncInputWindows().apply(true);
+ }
return LocalServices.getService(InputManagerInternal.class).injectInputEvent(ev, mode);
}