Loading services/core/java/com/android/server/wm/KeyguardController.java +3 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ class KeyguardController { private static final String TAG = TAG_WITH_CLASS_NAME ? "KeyguardController" : TAG_ATM; static final String KEYGUARD_SLEEP_TOKEN_TAG = "keyguard"; private final ActivityTaskSupervisor mTaskSupervisor; private WindowManagerService mWindowManager; private boolean mKeyguardShowing; Loading @@ -82,7 +84,7 @@ class KeyguardController { ActivityTaskSupervisor taskSupervisor) { mService = service; mTaskSupervisor = taskSupervisor; mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl("keyguard"); mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl(KEYGUARD_SLEEP_TOKEN_TAG); } void setWindowManager(WindowManagerService windowManager) { Loading services/core/java/com/android/server/wm/RootWindowContainer.java +28 −12 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList; import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity; import static com.android.server.wm.KeyguardController.KEYGUARD_SLEEP_TOKEN_TAG; import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT; import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER; import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER; Loading Loading @@ -2664,16 +2665,31 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } mSleepTokens.remove(token.mHashKey); final DisplayContent display = getDisplayContent(token.mDisplayId); if (display != null) { if (display == null) { Slog.d(TAG, "Remove sleep token for non-existing display: " + token + " from " + Debug.getCallers(6)); return; } display.mAllSleepTokens.remove(token); if (display.mAllSleepTokens.isEmpty()) { mService.updateSleepIfNeededLocked(); if (token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) { // Assuming no lock screen is set and a user launches an activity, turns off the screen // and turn on the screen again, then the launched activity should be displayed on the // screen without app transition animation. When the screen turns on, both keyguard // sleep token and display off sleep token are removed, but the order is // non-deterministic. // Note: Display#mSkipAppTransitionAnimation will be ignored when keyguard related // transition exists, so this affects only when no lock screen is set. Otherwise // keyguard going away animation will be played. // See also AppTransitionController#getTransitCompatType for more details. if ((!mTaskSupervisor.getKeyguardController().isDisplayOccluded(display.mDisplayId) && token.mTag.equals(KEYGUARD_SLEEP_TOKEN_TAG)) || token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) { display.mSkipAppTransitionAnimation = true; } } } } void addStartingWindowsForVisibleActivities() { final ArrayList<Task> addedTasks = new ArrayList<>(); Loading Loading
services/core/java/com/android/server/wm/KeyguardController.java +3 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ class KeyguardController { private static final String TAG = TAG_WITH_CLASS_NAME ? "KeyguardController" : TAG_ATM; static final String KEYGUARD_SLEEP_TOKEN_TAG = "keyguard"; private final ActivityTaskSupervisor mTaskSupervisor; private WindowManagerService mWindowManager; private boolean mKeyguardShowing; Loading @@ -82,7 +84,7 @@ class KeyguardController { ActivityTaskSupervisor taskSupervisor) { mService = service; mTaskSupervisor = taskSupervisor; mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl("keyguard"); mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl(KEYGUARD_SLEEP_TOKEN_TAG); } void setWindowManager(WindowManagerService windowManager) { Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +28 −12 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList; import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity; import static com.android.server.wm.KeyguardController.KEYGUARD_SLEEP_TOKEN_TAG; import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT; import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER; import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER; Loading Loading @@ -2664,16 +2665,31 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } mSleepTokens.remove(token.mHashKey); final DisplayContent display = getDisplayContent(token.mDisplayId); if (display != null) { if (display == null) { Slog.d(TAG, "Remove sleep token for non-existing display: " + token + " from " + Debug.getCallers(6)); return; } display.mAllSleepTokens.remove(token); if (display.mAllSleepTokens.isEmpty()) { mService.updateSleepIfNeededLocked(); if (token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) { // Assuming no lock screen is set and a user launches an activity, turns off the screen // and turn on the screen again, then the launched activity should be displayed on the // screen without app transition animation. When the screen turns on, both keyguard // sleep token and display off sleep token are removed, but the order is // non-deterministic. // Note: Display#mSkipAppTransitionAnimation will be ignored when keyguard related // transition exists, so this affects only when no lock screen is set. Otherwise // keyguard going away animation will be played. // See also AppTransitionController#getTransitCompatType for more details. if ((!mTaskSupervisor.getKeyguardController().isDisplayOccluded(display.mDisplayId) && token.mTag.equals(KEYGUARD_SLEEP_TOKEN_TAG)) || token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) { display.mSkipAppTransitionAnimation = true; } } } } void addStartingWindowsForVisibleActivities() { final ArrayList<Task> addedTasks = new ArrayList<>(); Loading