Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 039abeb9 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Android (Google) Code Review
Browse files

Merge "Avoid remove starting window too early when playing multiple transitions" into main

parents 92f73b2b e534e81f
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -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.mWaitForSyncTransactionCommit) {
        if (mStartingData != null && mStartingData.mWaitForSyncTransactionCommitCount > 0) {
            mStartingData.mRemoveAfterTransaction = AFTER_TRANSACTION_COPY_TO_CLIENT;
            return true;
        }
@@ -2804,9 +2804,11 @@ 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 (mStartingData != null) {
            mStartingData.mWaitForSyncTransactionCommit = true;
        if (!added && mStartingData != null) {
            mStartingData.mWaitForSyncTransactionCommitCount++;
        }
    }

@@ -2817,7 +2819,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            return;
        }
        final StartingData lastData = mStartingData;
        lastData.mWaitForSyncTransactionCommit = false;
        lastData.mWaitForSyncTransactionCommitCount--;
        if (lastData.mRemoveAfterTransaction == AFTER_TRANSACTION_REMOVE_DIRECTLY) {
            removeStartingWindowAnimation(lastData.mPrepareRemoveAnimation);
        } else if (lastData.mRemoveAfterTransaction == AFTER_TRANSACTION_COPY_TO_CLIENT) {
@@ -2847,7 +2849,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        final boolean animate;
        final boolean hasImeSurface;
        if (mStartingData != null) {
            if (mStartingData.mWaitForSyncTransactionCommit
            if (mStartingData.mWaitForSyncTransactionCommitCount > 0
                    || mSyncState != SYNC_STATE_NONE) {
                mStartingData.mRemoveAfterTransaction = AFTER_TRANSACTION_REMOVE_DIRECTLY;
                mStartingData.mPrepareRemoveAnimation = prepareAnimation;
+2 −2
Original line number Diff line number Diff line
@@ -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.
     */
    boolean mWaitForSyncTransactionCommit;
    int mWaitForSyncTransactionCommitCount;

    /**
     * For Shell transition.
@@ -112,7 +112,7 @@ public abstract class StartingData {
    public String toString() {
        return getClass().getSimpleName() + "{"
                + Integer.toHexString(System.identityHashCode(this))
                + " waitForSyncTransactionCommit=" + mWaitForSyncTransactionCommit
                + " mWaitForSyncTransactionCommitCount=" + mWaitForSyncTransactionCommitCount
                + " removeAfterTransaction= " + mRemoveAfterTransaction
                + "}";
    }