Merge "Stop animation when screen times out and the user turns on the phone." into sc-dev
This commit is contained in:
@@ -66,6 +66,8 @@ class KeyguardController {
|
|||||||
|
|
||||||
private static final String TAG = TAG_WITH_CLASS_NAME ? "KeyguardController" : TAG_ATM;
|
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 final ActivityTaskSupervisor mTaskSupervisor;
|
||||||
private WindowManagerService mWindowManager;
|
private WindowManagerService mWindowManager;
|
||||||
private boolean mKeyguardShowing;
|
private boolean mKeyguardShowing;
|
||||||
@@ -82,7 +84,7 @@ class KeyguardController {
|
|||||||
ActivityTaskSupervisor taskSupervisor) {
|
ActivityTaskSupervisor taskSupervisor) {
|
||||||
mService = service;
|
mService = service;
|
||||||
mTaskSupervisor = taskSupervisor;
|
mTaskSupervisor = taskSupervisor;
|
||||||
mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl("keyguard");
|
mSleepTokenAcquirer = mService.new SleepTokenAcquirerImpl(KEYGUARD_SLEEP_TOKEN_TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setWindowManager(WindowManagerService windowManager) {
|
void setWindowManager(WindowManagerService windowManager) {
|
||||||
|
|||||||
@@ -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.PRESERVE_WINDOWS;
|
||||||
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
|
import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList;
|
||||||
import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity;
|
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.IS_HOME_RECENTS_COMPONENT;
|
||||||
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
|
import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
|
||||||
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
|
import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
|
||||||
@@ -2048,7 +2049,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
/**
|
/**
|
||||||
* Move root task with all its existing content to specified task display area.
|
* Move root task with all its existing content to specified task display area.
|
||||||
*
|
*
|
||||||
* @param rootTaskId Id of root task to move.
|
* @param rootTaskId Id of root task to move.
|
||||||
* @param taskDisplayArea The task display area to move root task to.
|
* @param taskDisplayArea The task display area to move root task to.
|
||||||
* @param onTop Indicates whether container should be place on top or on bottom.
|
* @param onTop Indicates whether container should be place on top or on bottom.
|
||||||
*/
|
*/
|
||||||
@@ -2086,9 +2087,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
/**
|
/**
|
||||||
* Move root task with all its existing content to specified display.
|
* Move root task with all its existing content to specified display.
|
||||||
*
|
*
|
||||||
* @param rootTaskId Id of root task to move.
|
* @param rootTaskId Id of root task to move.
|
||||||
* @param displayId Id of display to move root task to.
|
* @param displayId Id of display to move root task to.
|
||||||
* @param onTop Indicates whether container should be place on top or on bottom.
|
* @param onTop Indicates whether container should be place on top or on bottom.
|
||||||
*/
|
*/
|
||||||
void moveRootTaskToDisplay(int rootTaskId, int displayId, boolean onTop) {
|
void moveRootTaskToDisplay(int rootTaskId, int displayId, boolean onTop) {
|
||||||
final DisplayContent displayContent = getDisplayContentOrCreate(displayId);
|
final DisplayContent displayContent = getDisplayContentOrCreate(displayId);
|
||||||
@@ -2171,7 +2172,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
final ActivityRecord oldTopActivity = task.getTopMostActivity();
|
final ActivityRecord oldTopActivity = task.getTopMostActivity();
|
||||||
if (oldTopActivity != null && oldTopActivity.isState(STOPPED)
|
if (oldTopActivity != null && oldTopActivity.isState(STOPPED)
|
||||||
&& task.getDisplayContent().mAppTransition.containsTransitRequest(
|
&& task.getDisplayContent().mAppTransition.containsTransitRequest(
|
||||||
TRANSIT_TO_BACK)) {
|
TRANSIT_TO_BACK)) {
|
||||||
task.getDisplayContent().mClosingApps.add(oldTopActivity);
|
task.getDisplayContent().mClosingApps.add(oldTopActivity);
|
||||||
oldTopActivity.mRequestForceTransition = true;
|
oldTopActivity.mRequestForceTransition = true;
|
||||||
}
|
}
|
||||||
@@ -2664,13 +2665,28 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
|||||||
}
|
}
|
||||||
mSleepTokens.remove(token.mHashKey);
|
mSleepTokens.remove(token.mHashKey);
|
||||||
final DisplayContent display = getDisplayContent(token.mDisplayId);
|
final DisplayContent display = getDisplayContent(token.mDisplayId);
|
||||||
if (display != null) {
|
if (display == null) {
|
||||||
display.mAllSleepTokens.remove(token);
|
Slog.d(TAG, "Remove sleep token for non-existing display: " + token + " from "
|
||||||
if (display.mAllSleepTokens.isEmpty()) {
|
+ Debug.getCallers(6));
|
||||||
mService.updateSleepIfNeededLocked();
|
return;
|
||||||
if (token.mTag.equals(DISPLAY_OFF_SLEEP_TOKEN_TAG)) {
|
}
|
||||||
display.mSkipAppTransitionAnimation = true;
|
|
||||||
}
|
display.mAllSleepTokens.remove(token);
|
||||||
|
if (display.mAllSleepTokens.isEmpty()) {
|
||||||
|
mService.updateSleepIfNeededLocked();
|
||||||
|
// 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user