Merge "RefreshRatePolicy: set both min and max refresh rate when camera is used"
This commit is contained in:
@@ -164,9 +164,21 @@ class RefreshRatePolicy {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (w.mAttrs.preferredMinDisplayRefreshRate > 0) {
|
||||||
return w.mAttrs.preferredMinDisplayRefreshRate;
|
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) {
|
float getPreferredMaxRefreshRate(WindowState w) {
|
||||||
// If app is animating, it's not able to control refresh rate because we want the animation
|
// If app is animating, it's not able to control refresh rate because we want the animation
|
||||||
// to run in default refresh rate.
|
// to run in default refresh rate.
|
||||||
|
|||||||
@@ -104,7 +104,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
|
|||||||
mPolicy.addNonHighRefreshRatePackage("com.android.test");
|
mPolicy.addNonHighRefreshRatePackage("com.android.test");
|
||||||
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
|
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
|
||||||
assertEquals(0, mPolicy.getPreferredRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
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,
|
assertEquals(LOW_REFRESH_RATE,
|
||||||
mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
||||||
mPolicy.removeNonHighRefreshRatePackage("com.android.test");
|
mPolicy.removeNonHighRefreshRatePackage("com.android.test");
|
||||||
@@ -165,7 +166,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
|
|||||||
assertEquals(HI_MODE_ID, mPolicy.getPreferredModeId(overrideWindow));
|
assertEquals(HI_MODE_ID, mPolicy.getPreferredModeId(overrideWindow));
|
||||||
assertEquals(HI_REFRESH_RATE,
|
assertEquals(HI_REFRESH_RATE,
|
||||||
mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
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,
|
assertEquals(LOW_REFRESH_RATE,
|
||||||
mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
||||||
}
|
}
|
||||||
@@ -180,7 +182,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
|
|||||||
assertEquals(0, mPolicy.getPreferredModeId(overrideWindow));
|
assertEquals(0, mPolicy.getPreferredModeId(overrideWindow));
|
||||||
assertEquals(HI_REFRESH_RATE,
|
assertEquals(HI_REFRESH_RATE,
|
||||||
mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
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,
|
assertEquals(LOW_REFRESH_RATE,
|
||||||
mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE);
|
||||||
}
|
}
|
||||||
@@ -257,7 +260,8 @@ public class RefreshRatePolicyTest extends WindowTestsBase {
|
|||||||
mPolicy.addNonHighRefreshRatePackage("com.android.test");
|
mPolicy.addNonHighRefreshRatePackage("com.android.test");
|
||||||
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
|
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
|
||||||
assertEquals(0, mPolicy.getPreferredRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
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,
|
assertEquals(LOW_REFRESH_RATE,
|
||||||
mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user