diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityRecord.java | 12 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/StartingData.java | 4 |
2 files changed, 7 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 9da79360c902..ff6f021f52a7 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2641,7 +2641,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } // Only do transfer after transaction has done when starting window exist. - if (mStartingData != null && mStartingData.mWaitForSyncTransactionCommitCount > 0) { + if (mStartingData != null && mStartingData.mWaitForSyncTransactionCommit) { mStartingData.mRemoveAfterTransaction = AFTER_TRANSACTION_COPY_TO_CLIENT; return true; } @@ -2804,11 +2804,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A @Override void waitForSyncTransactionCommit(ArraySet<WindowContainer> wcAwaitingCommit) { - // Only add once per transition. - final boolean added = wcAwaitingCommit.contains(this); super.waitForSyncTransactionCommit(wcAwaitingCommit); - if (!added && mStartingData != null) { - mStartingData.mWaitForSyncTransactionCommitCount++; + if (mStartingData != null) { + mStartingData.mWaitForSyncTransactionCommit = true; } } @@ -2819,7 +2817,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return; } final StartingData lastData = mStartingData; - lastData.mWaitForSyncTransactionCommitCount--; + lastData.mWaitForSyncTransactionCommit = false; if (lastData.mRemoveAfterTransaction == AFTER_TRANSACTION_REMOVE_DIRECTLY) { removeStartingWindowAnimation(lastData.mPrepareRemoveAnimation); } else if (lastData.mRemoveAfterTransaction == AFTER_TRANSACTION_COPY_TO_CLIENT) { @@ -2849,7 +2847,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A final boolean animate; final boolean hasImeSurface; if (mStartingData != null) { - if (mStartingData.mWaitForSyncTransactionCommitCount > 0 + if (mStartingData.mWaitForSyncTransactionCommit || mSyncState != SYNC_STATE_NONE) { mStartingData.mRemoveAfterTransaction = AFTER_TRANSACTION_REMOVE_DIRECTLY; mStartingData.mPrepareRemoveAnimation = prepareAnimation; diff --git a/services/core/java/com/android/server/wm/StartingData.java b/services/core/java/com/android/server/wm/StartingData.java index 22c7e8c98808..24fb20731c43 100644 --- a/services/core/java/com/android/server/wm/StartingData.java +++ b/services/core/java/com/android/server/wm/StartingData.java @@ -69,7 +69,7 @@ public abstract class StartingData { * Note this isn't equal to transition playing, the period should be * Sync finishNow -> Start transaction apply. */ - int mWaitForSyncTransactionCommitCount; + boolean mWaitForSyncTransactionCommit; /** * For Shell transition. @@ -112,7 +112,7 @@ public abstract class StartingData { public String toString() { return getClass().getSimpleName() + "{" + Integer.toHexString(System.identityHashCode(this)) - + " mWaitForSyncTransactionCommitCount=" + mWaitForSyncTransactionCommitCount + + " waitForSyncTransactionCommit=" + mWaitForSyncTransactionCommit + " removeAfterTransaction= " + mRemoveAfterTransaction + "}"; } |