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

Commit 5c21885f authored by Matt Pietal's avatar Matt Pietal
Browse files

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
parent 1135dae8
Loading
Loading
Loading
Loading
+17 −16
Original line number Diff line number Diff line
@@ -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;
        }
    }
}