diff options
| author | 2019-06-25 09:40:36 -0700 | |
|---|---|---|
| committer | 2019-06-25 09:40:36 -0700 | |
| commit | 61ae29864a061ba172c48539260d68c9adf0ac1b (patch) | |
| tree | 446502952abcca5e1d312452599315b141b8b0f9 | |
| parent | 95460d28f8757033181da4953e930dc7612deb09 (diff) | |
| parent | ea470ecb6fb6c37e5403f2bb056ba644199009cc (diff) | |
Merge "Revert "Clear transitions for app windows display change."" into qt-dev
am: ea470ecb6f
Change-Id: I4561f1ff9b593e61d1c517af01cb28d26cd9f935
| -rw-r--r-- | services/core/java/com/android/server/wm/AppWindowToken.java | 16 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 3 |
2 files changed, 14 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index be3b924aaeb7..deae923a334e 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -1331,9 +1331,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (prevDc == null || prevDc == mDisplayContent) { return; } - - prevDc.mOpeningApps.remove(this); - if (prevDc.mChangingApps.remove(this)) { + if (prevDc.mChangingApps.contains(this)) { // This gets called *after* the AppWindowToken has been reparented to the new display. // That reparenting resulted in this window changing modes (eg. FREEFORM -> FULLSCREEN), // so this token is now "frozen" while waiting for the animation to start on prevDc @@ -1342,8 +1340,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree // so we need to cancel the change transition here. clearChangeLeash(getPendingTransaction(), true /* cancel */); } - prevDc.mClosingApps.remove(this); - if (prevDc.mFocusedApp == this) { prevDc.setFocusedApp(null); final TaskStack stack = dc.getTopStack(); @@ -3229,6 +3225,16 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree true /* topToBottom */); } + void removeFromPendingTransition() { + if (isWaitingForTransitionStart() && mDisplayContent != null) { + mDisplayContent.mOpeningApps.remove(this); + if (mDisplayContent.mChangingApps.remove(this)) { + clearChangeLeash(getPendingTransaction(), true /* cancel */); + } + mDisplayContent.mClosingApps.remove(this); + } + } + private void updateColorTransform() { if (mSurfaceControl != null && mLastAppSaturationInfo != null) { getPendingTransaction().setColorTransform(mSurfaceControl, diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 5c83b020b5d6..b3f3ba34d727 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -2377,6 +2377,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo + " to its current displayId=" + mDisplayId); } + // Clean up all pending transitions when stack reparent to another display. + stack.forAllAppWindows(AppWindowToken::removeFromPendingTransition); + prevDc.mTaskStackContainers.removeChild(stack); mTaskStackContainers.addStackToDisplay(stack, onTop); } |