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

Commit 89040f88 authored by Ady Abraham's avatar Ady Abraham Committed by Automerger Merge Worker
Browse files

Merge "RefreshRatePolicy: set both min and max refresh rate when camera is...

Merge "RefreshRatePolicy: set both min and max refresh rate when camera is used" am: 744da388 am: a800211f

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

Change-Id: I094d83ad3086b8d58286af1057a21b1d6e152782
parents 5cf0381c a800211f
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -164,9 +164,21 @@ class RefreshRatePolicy {
            return 0;
        }

        if (w.mAttrs.preferredMinDisplayRefreshRate > 0) {
            return w.mAttrs.preferredMinDisplayRefreshRate;
        }

        String packageName = w.getOwningPackage();
        // If app is using Camera, we set both the min and max refresh rate to the camera's
        // preferred refresh rate to make sure we don't end up with a refresh rate lower
        // than the camera capture rate, which will lead to dropping camera frames.
        if (mNonHighRefreshRatePackages.contains(packageName)) {
            return mLowRefreshRateMode.getRefreshRate();
        }

        return 0;
    }

    float getPreferredMaxRefreshRate(WindowState w) {
        // If app is animating, it's not able to control refresh rate because we want the animation
        // to run in default refresh rate.
+8 −4
Original line number Diff line number Diff line
@@ -104,7 +104,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
        mPolicy.addNonHighRefreshRatePackage("com.android.test");
        assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
        assertEquals(0, mPolicy.getPreferredRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(0, mPolicy.getPreferredMinRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMinRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        mPolicy.removeNonHighRefreshRatePackage("com.android.test");
@@ -165,7 +166,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
        assertEquals(HI_MODE_ID, mPolicy.getPreferredModeId(overrideWindow));
        assertEquals(HI_REFRESH_RATE,
                mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(0, mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
    }
@@ -180,7 +182,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
        assertEquals(0, mPolicy.getPreferredModeId(overrideWindow));
        assertEquals(HI_REFRESH_RATE,
                mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(0, mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
    }
@@ -257,7 +260,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
        mPolicy.addNonHighRefreshRatePackage("com.android.test");
        assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
        assertEquals(0, mPolicy.getPreferredRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(0, mPolicy.getPreferredMinRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMinRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
        assertEquals(LOW_REFRESH_RATE,
                mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);