diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index a61925f7bd6c..e6467522a410 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -4415,6 +4415,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP for (int i = mChildren.size() - 1; i >= 0; i--) { committed |= mChildren.get(i).commitFinishDrawing(t); } + // In case commitFinishDrawingLocked starts a window level animation, make sure the surface + // operation (reparent to leash) is synced with the visibility by transition. + if (getAnimationLeash() != null) { + t.merge(getSyncTransaction()); + } return committed; } @@ -5028,7 +5033,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP new WindowAnimationSpec(anim, position, false /* canSkipFirstFrame */, 0 /* windowCornerRadius */), mWmService.mSurfaceAnimationRunner); - startAnimation(getPendingTransaction(), adapter); + final Transaction t = mActivityRecord != null + ? getSyncTransaction() : getPendingTransaction(); + startAnimation(t, adapter); commitPendingTransaction(); } |