summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xservices/core/java/com/android/server/wm/ForceRefreshRatePackagelist.java23
-rwxr-xr-xservices/core/java/com/android/server/wm/RefreshRatePolicy.java8
2 files changed, 25 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/ForceRefreshRatePackagelist.java b/services/core/java/com/android/server/wm/ForceRefreshRatePackagelist.java
index ee056b64af82..15d1e7df1f69 100755
--- a/services/core/java/com/android/server/wm/ForceRefreshRatePackagelist.java
+++ b/services/core/java/com/android/server/wm/ForceRefreshRatePackagelist.java
@@ -90,22 +90,35 @@ class ForceRefreshRatePackageList {
int getForceRefreshRateId(String packageName) {
synchronized (mLock) {
if(mForcedPackageList.containsKey(packageName)) {
- float refreshRate = mForcedPackageList.get(packageName).floatValue();
- return findModeByRefreshRate(refreshRate);
+ float refreshRate = mForcedPackageList.get(packageName).floatValue();
+ Display.Mode mode = findModeByRefreshRate(refreshRate);
+ return mode != null ? mode.getModeId() : 0;
}else {
return 0;
}
}
}
- int findModeByRefreshRate(float refreshRate) {
+ float getForceRefreshRate(String packageName) {
+ synchronized (mLock) {
+ if(mForcedPackageList.containsKey(packageName)) {
+ float refreshRate = mForcedPackageList.get(packageName).floatValue();
+ Display.Mode mode = findModeByRefreshRate(refreshRate);
+ return mode != null ? mode.getRefreshRate() : 0;
+ }else {
+ return 0;
+ }
+ }
+ }
+
+ private Display.Mode findModeByRefreshRate(float refreshRate) {
Display.Mode[] modes = mDisplayInfo.supportedModes;
for (int i = 0; i < modes.length; i++) {
if (Math.abs(modes[i].getRefreshRate() - refreshRate) < REFRESH_RATE_EPSILON) {
- return modes[i].getModeId();
+ return modes[i];
}
}
- return 0;
+ return null;
}
private class SettingsObserver extends ContentObserver {
diff --git a/services/core/java/com/android/server/wm/RefreshRatePolicy.java b/services/core/java/com/android/server/wm/RefreshRatePolicy.java
index aadddc53bff4..1aa1edc60656 100755
--- a/services/core/java/com/android/server/wm/RefreshRatePolicy.java
+++ b/services/core/java/com/android/server/wm/RefreshRatePolicy.java
@@ -97,7 +97,7 @@ class RefreshRatePolicy {
return 0;
}
- // If app is forced to specified refresh rate, return the specified refresh rate
+ // If app is forced to specified refresh rate, return the corresponding mode id.
int forceRefreshRateId = mForceList.getForceRefreshRateId(w.getOwningPackage());
if(forceRefreshRateId > 0) {
return forceRefreshRateId;
@@ -137,6 +137,12 @@ class RefreshRatePolicy {
return 0;
}
+ // If app is forced to specified refresh rate, return the specified refresh rate.
+ float forceRefreshRate = mForceList.getForceRefreshRate(w.getOwningPackage());
+ if(forceRefreshRate > 0) {
+ return forceRefreshRate;
+ }
+
// If the app set a preferredDisplayModeId, the preferred refresh rate is the refresh rate
// of that mode id.
final int preferredModeId = w.mAttrs.preferredDisplayModeId;