Merge "External display mode limit flag in settings" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
efc891fca7
@@ -23,6 +23,8 @@ import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_CONNECT
|
||||
import static android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_REMOVED;
|
||||
import static android.view.Display.INVALID_DISPLAY;
|
||||
|
||||
import static com.android.server.display.feature.flags.Flags.enableModeLimitForExternalDisplay;
|
||||
|
||||
import android.content.Context;
|
||||
import android.hardware.display.DisplayManager;
|
||||
import android.hardware.display.DisplayManagerGlobal;
|
||||
@@ -271,6 +273,13 @@ public class ExternalDisplaySettingsConfiguration {
|
||||
public void setUserPreferredDisplayMode(int displayId, @NonNull Mode mode) {
|
||||
DisplayManagerGlobal.getInstance().setUserPreferredDisplayMode(displayId, mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the display mode limit flag enabled.
|
||||
*/
|
||||
public boolean isModeLimitForExternalDisplayEnabled() {
|
||||
return enableModeLimitForExternalDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract static class DisplayListener implements DisplayManager.DisplayListener {
|
||||
|
||||
@@ -52,7 +52,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase {
|
||||
private static final String TAG = "ResolutionPreferenceFragment";
|
||||
private static final String TAG = "ResolutionPreference";
|
||||
static final int DEFAULT_LOW_REFRESH_RATE = 60;
|
||||
static final String MORE_OPTIONS_KEY = "more_options";
|
||||
static final String TOP_OPTIONS_KEY = "top_options";
|
||||
@@ -60,6 +60,8 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
R.string.external_display_more_options_title;
|
||||
static final int EXTERNAL_DISPLAY_RESOLUTION_SETTINGS_RESOURCE =
|
||||
R.xml.external_display_resolution_settings;
|
||||
static final String DISPLAY_MODE_LIMIT_OVERRIDE_PROP = "persist.sys.com.android.server.display"
|
||||
+ ".feature.flags.enable_mode_limit_for_external_display-override";
|
||||
@Nullable
|
||||
private Injector mInjector;
|
||||
@Nullable
|
||||
@@ -323,16 +325,29 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isDisplayResolutionLimitEnabled() {
|
||||
if (mInjector == null) {
|
||||
return false;
|
||||
}
|
||||
var flagOverride = mInjector.getSystemProperty(DISPLAY_MODE_LIMIT_OVERRIDE_PROP);
|
||||
var isOverrideEnabled = "true".equals(flagOverride);
|
||||
var isOverrideEnabledOrNotSet = !"false".equals(flagOverride);
|
||||
return (mInjector.isModeLimitForExternalDisplayEnabled() && isOverrideEnabledOrNotSet)
|
||||
|| isOverrideEnabled;
|
||||
}
|
||||
|
||||
private void updateDisplayModeLimits(@Nullable Context context) {
|
||||
if (context == null) {
|
||||
return;
|
||||
}
|
||||
mExternalDisplayPeakRefreshRate = getResources(context).getInteger(
|
||||
com.android.internal.R.integer.config_externalDisplayPeakRefreshRate);
|
||||
mExternalDisplayPeakWidth = getResources(context).getInteger(
|
||||
if (isDisplayResolutionLimitEnabled()) {
|
||||
mExternalDisplayPeakWidth = getResources(context).getInteger(
|
||||
com.android.internal.R.integer.config_externalDisplayPeakWidth);
|
||||
mExternalDisplayPeakHeight = getResources(context).getInteger(
|
||||
mExternalDisplayPeakHeight = getResources(context).getInteger(
|
||||
com.android.internal.R.integer.config_externalDisplayPeakHeight);
|
||||
}
|
||||
mRefreshRateSynchronizationEnabled = getResources(context).getBoolean(
|
||||
com.android.internal.R.bool.config_refreshRateSynchronizationEnabled);
|
||||
Log.d(TAG, "mExternalDisplayPeakRefreshRate=" + mExternalDisplayPeakRefreshRate);
|
||||
|
||||
Reference in New Issue
Block a user