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

Commit 159645b4 authored by Evan Laird's avatar Evan Laird Committed by Automerger Merge Worker
Browse files

Merge "Cache Display.Mode so we can ignore refresh rate changes" into...

Merge "Cache Display.Mode so we can ignore refresh rate changes" into rvc-d1-dev am: b2641d1d am: 7cb577fd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12063358

Change-Id: I4545084d67ea881d1510970c13eae10820656b81
parents 485d2364 7cb577fd
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import android.os.UserHandle;
import android.provider.Settings.Secure;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.DisplayCutout;
import android.view.DisplayCutout.BoundsPosition;
import android.view.DisplayInfo;
@@ -820,6 +821,7 @@ public class ScreenDecorations extends SystemUI implements Tunable {

        private static final float HIDDEN_CAMERA_PROTECTION_SCALE = 0.5f;

        private Display.Mode mDisplayMode = null;
        private final DisplayInfo mInfo = new DisplayInfo();
        private final Paint mPaint = new Paint();
        private final List<Rect> mBounds = new ArrayList();
@@ -904,11 +906,33 @@ public class ScreenDecorations extends SystemUI implements Tunable {

        @Override
        public void onDisplayChanged(int displayId) {
            Display.Mode oldMode = mDisplayMode;
            mDisplayMode = getDisplay().getMode();

            // Display mode hasn't meaningfully changed, we can ignore it
            if (!modeChanged(oldMode, mDisplayMode)) {
                return;
            }

            if (displayId == getDisplay().getDisplayId()) {
                update();
            }
        }

        private boolean modeChanged(Display.Mode oldMode, Display.Mode newMode) {
            if (oldMode == null) {
                return true;
            }

            boolean changed = false;
            changed |= oldMode.getPhysicalHeight() != newMode.getPhysicalHeight();
            changed |= oldMode.getPhysicalWidth() != newMode.getPhysicalWidth();
            // We purposely ignore refresh rate and id changes here, because we don't need to
            // invalidate for those, and they can trigger the refresh rate to increase

            return changed;
        }

        public void setRotation(int rotation) {
            mRotation = rotation;
            update();