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

Commit b10b75a1 authored by Wale Ogunwale's avatar Wale Ogunwale Committed by android-build-merger
Browse files

Merge "Don't remove starting window for visible app." into oc-dr1-dev am: d4b83f96

am: 654f917c

Change-Id: I492ab4b9f28edc65fcd2b60c7d314fe8462437b2
parents aac4ad6d 654f917c
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -2168,7 +2168,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
        if (mStartingWindowState == STARTING_WINDOW_SHOWN && behindFullscreenActivity) {
        if (mStartingWindowState == STARTING_WINDOW_SHOWN && behindFullscreenActivity) {
            if (DEBUG_VISIBILITY) Slog.w(TAG_VISIBILITY, "Found orphaned starting window " + this);
            if (DEBUG_VISIBILITY) Slog.w(TAG_VISIBILITY, "Found orphaned starting window " + this);
            mStartingWindowState = STARTING_WINDOW_REMOVED;
            mStartingWindowState = STARTING_WINDOW_REMOVED;
            mWindowContainerController.removeStartingWindow();
            mWindowContainerController.removeHiddenStartingWindow();
        }
        }
    }
    }


+17 −1
Original line number Original line Diff line number Diff line
@@ -647,7 +647,23 @@ public class AppWindowContainerController
        return mContainer.getTask().getConfiguration().orientation == snapshot.getOrientation();
        return mContainer.getTask().getConfiguration().orientation == snapshot.getOrientation();
    }
    }


    public void removeStartingWindow() {
    /**
     * Remove starting window if the app is currently hidden. It is possible the starting window is
     * part of its app exit transition animation in which case we delay hiding the app token. The
     * method allows for removal when window manager has set the app token to hidden.
     */
    public void removeHiddenStartingWindow() {
        synchronized (mWindowMap) {
            if (!mContainer.hidden) {
                if (DEBUG_STARTING_WINDOW) Slog.v(TAG_WM, "Starting window app still visible."
                        + " Ignoring remove request.");
                return;
            }
            removeStartingWindow();
        }
    }

    void removeStartingWindow() {
        synchronized (mWindowMap) {
        synchronized (mWindowMap) {
            if (mHandler.hasCallbacks(mRemoveStartingWindow)) {
            if (mHandler.hasCallbacks(mRemoveStartingWindow)) {
                // Already scheduled.
                // Already scheduled.
+8 −3
Original line number Original line Diff line number Diff line
@@ -441,6 +441,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
                    mChildren.get(i).mWinAnimator.hide("immediately hidden");
                    mChildren.get(i).mWinAnimator.hide("immediately hidden");
                }
                }
                SurfaceControl.closeTransaction();
                SurfaceControl.closeTransaction();
                removeStartingWindow();
            }
            }


            if (!mService.mClosingApps.contains(this) && !mService.mOpeningApps.contains(this)) {
            if (!mService.mClosingApps.contains(this) && !mService.mOpeningApps.contains(this)) {
@@ -518,6 +519,12 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
        return super.checkCompleteDeferredRemoval();
        return super.checkCompleteDeferredRemoval();
    }
    }


    private void removeStartingWindow() {
        if (startingData != null && getController() != null) {
            getController().removeStartingWindow();
        }
    }

    void onRemovedFromDisplay() {
    void onRemovedFromDisplay() {
        if (mRemovingFromDisplay) {
        if (mRemovingFromDisplay) {
            return;
            return;
@@ -545,9 +552,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
        if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM, "removeAppToken: "
        if (DEBUG_ADD_REMOVE || DEBUG_TOKEN_MOVEMENT) Slog.v(TAG_WM, "removeAppToken: "
                + this + " delayed=" + delayed + " Callers=" + Debug.getCallers(4));
                + this + " delayed=" + delayed + " Callers=" + Debug.getCallers(4));


        if (startingData != null && getController() != null) {
        removeStartingWindow();
            getController().removeStartingWindow();
        }


        // If this window was animating, then we need to ensure that the app transition notifies
        // If this window was animating, then we need to ensure that the app transition notifies
        // that animations have completed in WMS.handleAnimatingStoppedAndTransitionLocked(), so
        // that animations have completed in WMS.handleAnimatingStoppedAndTransitionLocked(), so