diff options
| author | 2019-06-25 16:12:54 +0000 | |
|---|---|---|
| committer | 2019-06-25 16:12:54 +0000 | |
| commit | ea470ecb6fb6c37e5403f2bb056ba644199009cc (patch) | |
| tree | 581ea6bd4dc918b895c54e9b5aafcddc59377324 | |
| parent | c760a652ab4bf5cd909abf1b647fe1a84b3a7870 (diff) | |
| parent | 149a6f09cc98a9eedb22dd773ae64850db38cb9e (diff) | |
Merge "Revert "Clear transitions for app windows display change."" into qt-dev
| -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 80848a8f24f0..c3a769b63e5a 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);      }  |