Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b9ac733 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Polish the transition when unlocking to home

- Only take snapshot if keyguard is secure because the snapshot
  doesn't help too much if there is unlocking window animation,
  because screen is already turned on in this case.
- Only use the snapshot when unlocking to home directly because
  the visual look may be worse with translate animation.
- Dismiss the snapshot starting window directly when the main
  window is ready, so it has less chance to see the fading
  translucent outdated snapshot.

Bug: 140811348
Bug: 148553119
Test: Unlock device with fingerprint and password.
      Check the top area of home doesn't have obvious
      fading scrim.

Change-Id: Ifb1302bd185d83ca9b203cf5d01a8f50fa1d6e69
parent 5b6fb2ae
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1723,10 +1723,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                // The snapshot of home is only used once because it won't be updated while screen
                // is on (see {@link TaskSnapshotController#screenTurningOff}).
                mWmService.mTaskSnapshotController.removeSnapshotCache(task.mTaskId);
                // TODO(b/9684093): Use more general condition to specify the case.
                if (mDisplayContent.mAppTransition
                        .getAppTransition() != WindowManager.TRANSIT_KEYGUARD_GOING_AWAY) {
                    // Only use snapshot of home as starting window when unlocking.
                if ((mDisplayContent.mAppTransition.getTransitFlags()
                        & WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION) == 0) {
                    // Only use snapshot of home as starting window when unlocking directly.
                    return false;
                }
            }
+5 −0
Original line number Diff line number Diff line
@@ -1183,6 +1183,11 @@ public class DisplayPolicy {

        if (transit == TRANSIT_PREVIEW_DONE) {
            if (win.hasAppShownWindows()) {
                if (win.isActivityTypeHome()) {
                    // Dismiss the starting window as soon as possible to avoid the crossfade out
                    // with old content because home is easier to have different UI states.
                    return ANIMATION_NONE;
                }
                if (DEBUG_ANIM) Slog.i(TAG, "**** STARTING EXIT");
                return R.anim.app_starting_exit;
            }
+4 −2
Original line number Diff line number Diff line
@@ -559,8 +559,10 @@ class TaskSnapshotController {
                        }
                    });
                    // Allow taking snapshot of home when turning screen off to reduce the delay of
                    // unlocking/waking to home.
                    snapshotTasks(mTmpTasks, true /* allowSnapshotHome */);
                    // waking from secure lock to home.
                    final boolean allowSnapshotHome =
                            mService.mPolicy.isKeyguardSecure(mService.mCurrentUserId);
                    snapshotTasks(mTmpTasks, allowSnapshotHome);
                }
            } finally {
                listener.onScreenOff();