Merge "Add DisplayManager API to query if the device supports seamless refresh rate switching"
diff --git a/core/api/current.txt b/core/api/current.txt
index 4622ca8..847e1c3 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -12394,7 +12394,6 @@
field public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal";
field public static final String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape";
field public static final String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait";
- field public static final String FEATURE_SEAMLESS_REFRESH_RATE_SWITCHING = "android.software.seamless_refresh_rate_switching";
field public static final String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users";
field public static final String FEATURE_SECURE_LOCK_SCREEN = "android.software.secure_lock_screen";
field public static final String FEATURE_SECURITY_MODEL_COMPATIBLE = "android.hardware.security.model.compatible";
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 900454d..da36da5 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -3011,14 +3011,6 @@
"android.software.virtualization_framework";
/**
- * Feature for {@link #getSystemAvailableFeatures()} and {@link #hasSystemFeature(String)}.
- * This feature indicates whether device supports seamless refresh rate switching.
- */
- @SdkConstant(SdkConstantType.FEATURE)
- public static final String FEATURE_SEAMLESS_REFRESH_RATE_SWITCHING
- = "android.software.seamless_refresh_rate_switching";
-
- /**
* Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature(String, int)}: If this feature is supported, the Vulkan
* implementation on this device is hardware accelerated, and the Vulkan native API will
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 42803a1..b333f5a 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -50,6 +50,8 @@
import android.view.Display;
import android.view.Surface;
+import com.android.internal.R;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -1323,6 +1325,22 @@
}
/**
+ * Returns whether device supports seamless refresh rate switching.
+ *
+ * Match content frame rate setting has three options: seamless, non-seamless and never.
+ * The seamless option does nothing if the device does not support seamless refresh rate
+ * switching. This API is used in such a case to hide the seamless option.
+ *
+ * @see DisplayManager#setRefreshRateSwitchingType
+ * @see DisplayManager#getMatchContentFrameRateUserPreference
+ * @hide
+ */
+ public boolean supportsSeamlessRefreshRateSwitching() {
+ return mContext.getResources().getBoolean(
+ R.bool.config_supportsSeamlessRefreshRateSwitching);
+ }
+
+ /**
* Sets the refresh rate switching type.
* This matches {@link android.provider.Settings.Secure.MATCH_CONTENT_FRAME_RATE}
*
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 0e2dcf3..c3ebef0 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4468,6 +4468,9 @@
<!-- Allow SystemUI to show the shutdown dialog -->
<bool name="config_showSysuiShutdown">true</bool>
+ <!-- Flag indicating whether seamless refresh rate switching is supported by a device. -->
+ <bool name="config_supportsSeamlessRefreshRateSwitching">true</bool>
+
<!-- The stable device width and height in pixels. If these aren't set to a positive number
then the device will use the width and height of the default display the first time it's
booted. -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 2f73dfb..89a28d5 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3823,6 +3823,7 @@
<java-symbol type="id" name="messaging_group_icon_container" />
<java-symbol type="id" name="messaging_group_sending_progress" />
<java-symbol type="id" name="messaging_group_sending_progress_container" />
+ <java-symbol type="bool" name="config_supportsSeamlessRefreshRateSwitching" />
<java-symbol type="integer" name="config_stableDeviceDisplayWidth" />
<java-symbol type="integer" name="config_stableDeviceDisplayHeight" />