Loading services/core/java/com/android/server/wm/WindowContainer.java +1 −0 Original line number Diff line number Diff line Loading @@ -1292,6 +1292,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< * Called when an animation has finished running. */ protected void onAnimationFinished() { mWmService.onAnimationFinished(); } /** Loading services/core/java/com/android/server/wm/WindowManagerService.java +30 −3 Original line number Diff line number Diff line Loading @@ -372,6 +372,8 @@ public class WindowManagerService extends IWindowManager.Stub private static final int TRANSITION_ANIMATION_SCALE = 1; private static final int ANIMATION_DURATION_SCALE = 2; private static final int ANIMATION_COMPLETED_TIMEOUT_MS = 5000; final WindowTracing mWindowTracing; final private KeyguardDisableHandler mKeyguardDisableHandler; Loading Loading @@ -7424,13 +7426,38 @@ public class WindowManagerService extends IWindowManager.Stub @Override public boolean injectInputAfterTransactionsApplied(InputEvent ev, int mode) { waitForAnimationsToComplete(); synchronized (mGlobalLock) { mWindowPlacerLocked.performSurfacePlacementIfScheduled(); new SurfaceControl.Transaction() .syncInputWindows() .apply(true); } new SurfaceControl.Transaction().syncInputWindows().apply(true); return mInputManager.injectInputEvent(ev, mode); } private void waitForAnimationsToComplete() { synchronized (mGlobalLock) { long timeoutRemaining = ANIMATION_COMPLETED_TIMEOUT_MS; while (mRoot.isSelfOrChildAnimating() && timeoutRemaining > 0) { long startTime = System.currentTimeMillis(); try { mGlobalLock.wait(timeoutRemaining); } catch (InterruptedException e) { } timeoutRemaining -= (System.currentTimeMillis() - startTime); } if (mRoot.isSelfOrChildAnimating()) { Log.w(TAG, "Timed out waiting for animations to complete."); } } } void onAnimationFinished() { synchronized (mGlobalLock) { mGlobalLock.notifyAll(); } } } services/core/java/com/android/server/wm/WindowState.java +1 −0 Original line number Diff line number Diff line Loading @@ -4489,6 +4489,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP @Override protected void onAnimationFinished() { super.onAnimationFinished(); mWinAnimator.onAnimationFinished(); } Loading Loading
services/core/java/com/android/server/wm/WindowContainer.java +1 −0 Original line number Diff line number Diff line Loading @@ -1292,6 +1292,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< * Called when an animation has finished running. */ protected void onAnimationFinished() { mWmService.onAnimationFinished(); } /** Loading
services/core/java/com/android/server/wm/WindowManagerService.java +30 −3 Original line number Diff line number Diff line Loading @@ -372,6 +372,8 @@ public class WindowManagerService extends IWindowManager.Stub private static final int TRANSITION_ANIMATION_SCALE = 1; private static final int ANIMATION_DURATION_SCALE = 2; private static final int ANIMATION_COMPLETED_TIMEOUT_MS = 5000; final WindowTracing mWindowTracing; final private KeyguardDisableHandler mKeyguardDisableHandler; Loading Loading @@ -7424,13 +7426,38 @@ public class WindowManagerService extends IWindowManager.Stub @Override public boolean injectInputAfterTransactionsApplied(InputEvent ev, int mode) { waitForAnimationsToComplete(); synchronized (mGlobalLock) { mWindowPlacerLocked.performSurfacePlacementIfScheduled(); new SurfaceControl.Transaction() .syncInputWindows() .apply(true); } new SurfaceControl.Transaction().syncInputWindows().apply(true); return mInputManager.injectInputEvent(ev, mode); } private void waitForAnimationsToComplete() { synchronized (mGlobalLock) { long timeoutRemaining = ANIMATION_COMPLETED_TIMEOUT_MS; while (mRoot.isSelfOrChildAnimating() && timeoutRemaining > 0) { long startTime = System.currentTimeMillis(); try { mGlobalLock.wait(timeoutRemaining); } catch (InterruptedException e) { } timeoutRemaining -= (System.currentTimeMillis() - startTime); } if (mRoot.isSelfOrChildAnimating()) { Log.w(TAG, "Timed out waiting for animations to complete."); } } } void onAnimationFinished() { synchronized (mGlobalLock) { mGlobalLock.notifyAll(); } } }
services/core/java/com/android/server/wm/WindowState.java +1 −0 Original line number Diff line number Diff line Loading @@ -4489,6 +4489,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP @Override protected void onAnimationFinished() { super.onAnimationFinished(); mWinAnimator.onAnimationFinished(); } Loading