From 5c21885fee05b7aa5f2b82baa072ccb15bd17d90 Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Wed, 3 Feb 2021 13:27:17 -0500 Subject: 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 --- .../android/keyguard/KeyguardDisplayManager.java | 33 +++++++++++----------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 85e9ca05d428..276036c400e1 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -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; + } } } -- cgit v1.2.3-59-g8ed1b