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

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

Merge "Make Recents activity invisible when it is behind a translucent activity" into nyc-dev

am: cbc73dec

* commit 'cbc73dec':
  Make Recents activity invisible when it is behind a translucent activity

Change-Id: I345069ffbb0f9694b29e4077240d6527d2ec096c
parents d73883c7 cbc73dec
Loading
Loading
Loading
Loading
+28 −7
Original line number Diff line number Diff line
@@ -1725,13 +1725,9 @@ final class ActivityStack {
                    continue;
                }
                aboveTop = false;
                // mLaunchingBehind: Activities launching behind are at the back of the task stack
                // but must be drawn initially for the animation as though they were visible.
                final boolean activityVisibleBehind =
                        (behindTranslucentActivity || stackVisibleBehind) && visibleBehind == r;
                final boolean isVisible = (!behindFullscreenActivity || r.mLaunchTaskBehind
                        || activityVisibleBehind) && okToShowLocked(r);
                if (isVisible) {

                if (shouldBeVisible(r, behindTranslucentActivity, stackVisibleBehind,
                        visibleBehind, behindFullscreenActivity)) {
                    if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Make visible? " + r
                            + " finishing=" + r.finishing + " state=" + r.state);
                    // First: if this is not the current activity being started, make
@@ -1819,6 +1815,31 @@ final class ActivityStack {
        }
    }

    /** Return true if the input activity should be made visible */
    private boolean shouldBeVisible(ActivityRecord r, boolean behindTranslucentActivity,
            boolean stackVisibleBehind, ActivityRecord visibleBehind,
            boolean behindFullscreenActivity) {
        // mLaunchingBehind: Activities launching behind are at the back of the task stack
        // but must be drawn initially for the animation as though they were visible.
        final boolean activityVisibleBehind =
                (behindTranslucentActivity || stackVisibleBehind) && visibleBehind == r;

        if (!okToShowLocked(r)) {
            return false;
        }

        boolean isVisible =
                !behindFullscreenActivity || r.mLaunchTaskBehind || activityVisibleBehind;

        if (isVisible && r.isRecentsActivity()) {
            // Recents activity can only be visible if the home stack isn't fullscreen or is the
            // focused stack.
            isVisible = !mFullscreen || mStackSupervisor.isFocusedStack(this);
        }

        return isVisible;
    }

    private void checkTranslucentActivityWaiting(ActivityRecord top) {
        if (mTranslucentActivityWaiting != top) {
            mUndrawnActivitiesBelowTopTranslucent.clear();