Merge "Take snapshot when device becomes dozing and pulsing" into sc-dev

This commit is contained in:
Riddle Hsu
2021-03-23 11:25:49 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 14 deletions

View File

@@ -167,6 +167,11 @@ class KeyguardController {
if (aodChanged) {
// Ensure the new state takes effect.
mWindowManager.mWindowPlacerLocked.performSurfacePlacement();
// If the device can enter AOD and keyguard at the same time, the screen will not be
// turned off, so the snapshot needs to be refreshed when these states are changed.
if (aodShowing && keyguardShowing && keyguardChanged) {
mWindowManager.mTaskSnapshotController.snapshotForSleeping(DEFAULT_DISPLAY);
}
}
if (keyguardChanged) {

View File

@@ -635,20 +635,7 @@ class TaskSnapshotController {
mHandler.post(() -> {
try {
synchronized (mService.mGlobalLock) {
mTmpTasks.clear();
mService.mRoot.getDisplayContent(displayId).forAllTasks(task -> {
// Since RecentsAnimation will handle task snapshot while switching apps
// with the best capture timing (e.g. IME window capture), No need
// additional task capture while task is controlled by RecentsAnimation.
if (task.isVisible() && !task.isAnimatingByRecents()) {
mTmpTasks.add(task);
}
});
// Allow taking snapshot of home when turning screen off to reduce the delay of
// waking from secure lock to home.
final boolean allowSnapshotHome = displayId == Display.DEFAULT_DISPLAY &&
mService.mPolicy.isKeyguardSecure(mService.mCurrentUserId);
snapshotTasks(mTmpTasks, allowSnapshotHome);
snapshotForSleeping(displayId);
}
} finally {
listener.onScreenOff();
@@ -656,6 +643,27 @@ class TaskSnapshotController {
});
}
/** Called when the device is going to sleep (e.g. screen off, AOD without screen off). */
void snapshotForSleeping(int displayId) {
if (shouldDisableSnapshots()) {
return;
}
mTmpTasks.clear();
mService.mRoot.getDisplayContent(displayId).forAllTasks(task -> {
// Since RecentsAnimation will handle task snapshot while switching apps with the best
// capture timing (e.g. IME window capture), No need additional task capture while task
// is controlled by RecentsAnimation.
if (task.isVisible() && !task.isAnimatingByRecents()) {
mTmpTasks.add(task);
}
});
// Allow taking snapshot of home when turning screen off to reduce the delay of waking from
// secure lock to home.
final boolean allowSnapshotHome = displayId == Display.DEFAULT_DISPLAY
&& mService.mPolicy.isKeyguardSecure(mService.mCurrentUserId);
snapshotTasks(mTmpTasks, allowSnapshotHome);
}
/**
* @return The {@link Appearance} flags for the top fullscreen opaque window in the given
* {@param task}.