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

am: cbc73decf1

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

Change-Id: I345069ffbb0f9694b29e4077240d6527d2ec096c
This commit is contained in:
Wale Ogunwale
2016-05-17 23:52:18 +00:00
committed by android-build-merger

View File

@@ -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();