Loading services/core/java/com/android/server/wm/KeyguardController.java +5 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading services/core/java/com/android/server/wm/TaskSnapshotController.java +22 −14 Original line number Diff line number Diff line Loading @@ -635,26 +635,34 @@ class TaskSnapshotController { mHandler.post(() -> { try { synchronized (mService.mGlobalLock) { snapshotForSleeping(displayId); } } finally { listener.onScreenOff(); } }); } /** 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. // 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); // 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); } } finally { listener.onScreenOff(); } }); } /** * @return The {@link Appearance} flags for the top fullscreen opaque window in the given Loading Loading
services/core/java/com/android/server/wm/KeyguardController.java +5 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
services/core/java/com/android/server/wm/TaskSnapshotController.java +22 −14 Original line number Diff line number Diff line Loading @@ -635,26 +635,34 @@ class TaskSnapshotController { mHandler.post(() -> { try { synchronized (mService.mGlobalLock) { snapshotForSleeping(displayId); } } finally { listener.onScreenOff(); } }); } /** 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. // 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); // 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); } } finally { listener.onScreenOff(); } }); } /** * @return The {@link Appearance} flags for the top fullscreen opaque window in the given Loading