From 8c09c7dd7a8838383a94ef85974a8ff0841dd8c5 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Mon, 23 May 2016 09:10:24 -0700 Subject: [PATCH] Fixed flicker when docking task from recents. Regression introduced by ag/1044640 where we don't want recents to the visible if it's stack isn't fullscreen or focused. However, it is possible for switching the home stack to not-fullscreen to prolonged while transitioning to split-screen mode from recents. We now check for if the docked stack exists which is a better indicator we are in split-screen mode regardless of if the stask is fullscreen. Bug: 28882948 Bug: 28246419 Change-Id: I54c02cc1486e7b5bf6a20dd0706c9bfe3f40a953 --- .../com/android/server/am/ActivityStack.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 3811b616a7f2f..9718ae86d42ef 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1819,22 +1819,24 @@ final class ActivityStack { 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; } + // 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; + 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); + // Recents activity can only be visible if the home stack is the focused stack or we are + // in split-screen mode. + isVisible = mStackSupervisor.getStack(DOCKED_STACK_ID) != null + || mStackSupervisor.isFocusedStack(this); } return isVisible;