Loading services/core/java/com/android/server/am/ActivityStack.java +0 −5 Original line number Diff line number Diff line Loading @@ -1591,11 +1591,6 @@ final class ActivityStack { return STACK_INVISIBLE; } final boolean isLockscreenShown = mService.mLockScreenShown == LOCK_SCREEN_SHOWN; if (isLockscreenShown && !StackId.isAllowedOverLockscreen(mStackId)) { return STACK_INVISIBLE; } final ActivityStack focusedStack = mStackSupervisor.getFocusedStack(); final int focusedStackId = focusedStack.mStackId; Loading services/core/java/com/android/server/am/ActivityStarter.java +3 −0 Original line number Diff line number Diff line Loading @@ -604,6 +604,9 @@ class ActivityStarter { // If we launched the activity from a no display activity that was launched from the home // screen, we also need to start recents to un-minimize the docked stack, since the // noDisplay activity will be finished shortly after. // Note that some apps have trampoline activities without noDisplay being set. In that case, // we have another heuristic in DockedStackDividerController.notifyAppTransitionStarting // that tries to detect that case. // TODO: We should prevent noDisplay activities from affecting task/stack ordering and // visibility instead of using this flag. final boolean noDisplayActivityOverHome = sourceRecord != null Loading services/core/java/com/android/server/wm/AppTransition.java +1 −1 Original line number Diff line number Diff line Loading @@ -382,7 +382,7 @@ public class AppTransition implements Dump { topOpeningAppAnimator != null ? topOpeningAppAnimator.animation : null, topClosingAppAnimator != null ? topClosingAppAnimator.animation : null); mService.getDefaultDisplayContentLocked().getDockedDividerController() .notifyAppTransitionStarting(); .notifyAppTransitionStarting(openingApps); // Prolong the start for the transition when docking a task from recents, unless recents // ended it already then we don't need to wait. Loading services/core/java/com/android/server/wm/DockedStackDividerController.java +25 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.util.ArraySet; import android.util.Slog; import android.view.DisplayInfo; import android.view.IDockedStackListener; Loading Loading @@ -492,8 +493,31 @@ public class DockedStackDividerController implements DimLayerUser { checkMinimizeChanged(false /* animate */); } void notifyAppTransitionStarting() { void notifyAppTransitionStarting(ArraySet<AppWindowToken> openingApps) { final boolean wasMinimized = mMinimizedDock; checkMinimizeChanged(true /* animate */); // We were minimized, and now we are still minimized, but somebody is trying to launch an // app in docked stack, better show recent apps so we actually get unminimized! This catches // any case that was missed in ActivityStarter.postStartActivityUncheckedProcessing because // we couldn't retrace the launch of the app in the docked stack to the launch from // homescreen. if (wasMinimized && mMinimizedDock && containsAppInDockedStack(openingApps)) { mService.showRecentApps(true /* fromHome */); } } /** * @return true if {@param apps} contains an activity in the docked stack, false otherwise. */ private boolean containsAppInDockedStack(ArraySet<AppWindowToken> apps) { for (int i = apps.size() - 1; i >= 0; i--) { final AppWindowToken token = apps.valueAt(i); if (token.mTask != null && token.mTask.mStack.mStackId == DOCKED_STACK_ID) { return true; } } return false; } boolean isMinimizedDock() { Loading Loading
services/core/java/com/android/server/am/ActivityStack.java +0 −5 Original line number Diff line number Diff line Loading @@ -1591,11 +1591,6 @@ final class ActivityStack { return STACK_INVISIBLE; } final boolean isLockscreenShown = mService.mLockScreenShown == LOCK_SCREEN_SHOWN; if (isLockscreenShown && !StackId.isAllowedOverLockscreen(mStackId)) { return STACK_INVISIBLE; } final ActivityStack focusedStack = mStackSupervisor.getFocusedStack(); final int focusedStackId = focusedStack.mStackId; Loading
services/core/java/com/android/server/am/ActivityStarter.java +3 −0 Original line number Diff line number Diff line Loading @@ -604,6 +604,9 @@ class ActivityStarter { // If we launched the activity from a no display activity that was launched from the home // screen, we also need to start recents to un-minimize the docked stack, since the // noDisplay activity will be finished shortly after. // Note that some apps have trampoline activities without noDisplay being set. In that case, // we have another heuristic in DockedStackDividerController.notifyAppTransitionStarting // that tries to detect that case. // TODO: We should prevent noDisplay activities from affecting task/stack ordering and // visibility instead of using this flag. final boolean noDisplayActivityOverHome = sourceRecord != null Loading
services/core/java/com/android/server/wm/AppTransition.java +1 −1 Original line number Diff line number Diff line Loading @@ -382,7 +382,7 @@ public class AppTransition implements Dump { topOpeningAppAnimator != null ? topOpeningAppAnimator.animation : null, topClosingAppAnimator != null ? topClosingAppAnimator.animation : null); mService.getDefaultDisplayContentLocked().getDockedDividerController() .notifyAppTransitionStarting(); .notifyAppTransitionStarting(openingApps); // Prolong the start for the transition when docking a task from recents, unless recents // ended it already then we don't need to wait. Loading
services/core/java/com/android/server/wm/DockedStackDividerController.java +25 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.util.ArraySet; import android.util.Slog; import android.view.DisplayInfo; import android.view.IDockedStackListener; Loading Loading @@ -492,8 +493,31 @@ public class DockedStackDividerController implements DimLayerUser { checkMinimizeChanged(false /* animate */); } void notifyAppTransitionStarting() { void notifyAppTransitionStarting(ArraySet<AppWindowToken> openingApps) { final boolean wasMinimized = mMinimizedDock; checkMinimizeChanged(true /* animate */); // We were minimized, and now we are still minimized, but somebody is trying to launch an // app in docked stack, better show recent apps so we actually get unminimized! This catches // any case that was missed in ActivityStarter.postStartActivityUncheckedProcessing because // we couldn't retrace the launch of the app in the docked stack to the launch from // homescreen. if (wasMinimized && mMinimizedDock && containsAppInDockedStack(openingApps)) { mService.showRecentApps(true /* fromHome */); } } /** * @return true if {@param apps} contains an activity in the docked stack, false otherwise. */ private boolean containsAppInDockedStack(ArraySet<AppWindowToken> apps) { for (int i = apps.size() - 1; i >= 0; i--) { final AppWindowToken token = apps.valueAt(i); if (token.mTask != null && token.mTask.mStack.mStackId == DOCKED_STACK_ID) { return true; } } return false; } boolean isMinimizedDock() { Loading