Keyguard - Don't recreate KeyguardPresentation

Do not hide and then reconstruct a new KeyguardPresentation on every
display change. Reuse and update the existing presentation.

Fixes: 178613948
Test: atest KeyguardDisplayManagerTest

Change-Id: I0a352ba8f518de18d7292501849e2f88f6c64f7b
This commit is contained in:
Matt Pietal
2021-02-03 13:27:17 -05:00
parent 1135dae87a
commit 5c21885fee

View File

@@ -74,16 +74,7 @@ public class KeyguardDisplayManager {
@Override
public void onDisplayChanged(int displayId) {
if (displayId == DEFAULT_DISPLAY) return;
final Presentation presentation = mPresentations.get(displayId);
if (presentation != null && mShowing) {
hidePresentation(displayId);
// update DisplayInfo.
final Display display = mDisplayService.getDisplay(displayId);
if (display != null) {
showPresentation(display);
}
}
}
@Override
@@ -304,16 +295,17 @@ public class KeyguardDisplayManager {
mClock.removeCallbacks(mMoveTextRunnable);
}
@Override
public void onDisplayChanged() {
updateBounds();
getWindow().getDecorView().requestLayout();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Rect bounds = getWindow().getWindowManager().getMaximumWindowMetrics()
.getBounds();
mUsableWidth = VIDEO_SAFE_REGION * bounds.width() / 100;
mUsableHeight = VIDEO_SAFE_REGION * bounds.height() / 100;
mMarginLeft = (100 - VIDEO_SAFE_REGION) * bounds.width() / 200;
mMarginTop = (100 - VIDEO_SAFE_REGION) * bounds.height() / 200;
updateBounds();
setContentView(LayoutInflater.from(mContext)
.inflate(R.layout.keyguard_presentation, null));
@@ -338,5 +330,14 @@ public class KeyguardDisplayManager {
mKeyguardClockSwitchController.init();
}
private void updateBounds() {
final Rect bounds = getWindow().getWindowManager().getMaximumWindowMetrics()
.getBounds();
mUsableWidth = VIDEO_SAFE_REGION * bounds.width() / 100;
mUsableHeight = VIDEO_SAFE_REGION * bounds.height() / 100;
mMarginLeft = (100 - VIDEO_SAFE_REGION) * bounds.width() / 200;
mMarginTop = (100 - VIDEO_SAFE_REGION) * bounds.height() / 200;
}
}
}