From afad304c1502a8918100559bfe061652d70cacbe Mon Sep 17 00:00:00 2001 From: Kriti Dang Date: Fri, 13 Jan 2023 14:09:16 +0100 Subject: [PATCH] Add DisplayManager API to query if the device supports seamless refresh rate switching It was added as a PackageManager flag earlier. Removing from there, because PackageManagere flags are only recommendded when applications need them to filter whether they can run on a given device. Bug: 186189147 Test: m Change-Id: I16475b750d223caf064c413b18851b302eb4e223 --- core/api/current.txt | 1 - .../android/content/pm/PackageManager.java | 8 -------- .../hardware/display/DisplayManager.java | 18 ++++++++++++++++++ core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index b662ed08dbdae..9a2c75fe490a2 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -12165,7 +12165,6 @@ package android.content.pm { 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 c46d94d222e9c..ec490d10d45ea 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2978,14 +2978,6 @@ public abstract class PackageManager { public static final String FEATURE_VIRTUALIZATION_FRAMEWORK = "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 diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 23d108fbe36a0..916afd6072f39 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -50,6 +50,8 @@ import android.util.SparseArray; 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; @@ -1309,6 +1311,22 @@ public final class DisplayManager { return mGlobal.shouldAlwaysRespectAppRequestedMode(); } + /** + * 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 1d18d4195edfd..4ca83db27185c 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -4411,6 +4411,9 @@ true + + true + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 54be56805b01e..19c708e56d964 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3879,6 +3879,7 @@ +