Merge "Fix "Enable ANGLE" switch behavior when Developer Option Switch is off" into udc-dev am: 67c72c01cb
am: b67e1d5371
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23360519 Change-Id: I6f25d8783e9c94335bd8f58c969b8e14c82f9147 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -354,13 +354,18 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
|
||||
final NfcVerboseVendorLogPreferenceController nfcVerboseLogController =
|
||||
getDevelopmentOptionsController(
|
||||
NfcVerboseVendorLogPreferenceController.class);
|
||||
final GraphicsDriverEnableAngleAsSystemDriverController enableAngleController =
|
||||
getDevelopmentOptionsController(
|
||||
GraphicsDriverEnableAngleAsSystemDriverController.class);
|
||||
// If hardware offload isn't default value, we must reboot after disable
|
||||
// developer options. Show a dialog for the user to confirm.
|
||||
if ((a2dpController == null || a2dpController.isDefaultValue())
|
||||
&& (leAudioController == null || leAudioController.isDefaultValue())
|
||||
&& (nfcSnoopLogController == null || nfcSnoopLogController.isDefaultValue())
|
||||
&& (nfcVerboseLogController == null
|
||||
|| nfcVerboseLogController.isDefaultValue())) {
|
||||
|| nfcVerboseLogController.isDefaultValue())
|
||||
&& (enableAngleController == null
|
||||
|| enableAngleController.isDefaultValue())) {
|
||||
disableDeveloperOptions();
|
||||
} else {
|
||||
DisableDevSettingsDialogFragment.show(this /* host */);
|
||||
|
@@ -45,6 +45,10 @@ public class DisableDevSettingsDialogFragment extends InstrumentedDialogFragment
|
||||
public static void show(DevelopmentSettingsDashboardFragment host) {
|
||||
final DisableDevSettingsDialogFragment dialog = new DisableDevSettingsDialogFragment();
|
||||
dialog.setTargetFragment(host, 0 /* requestCode */);
|
||||
// We need to handle data changes and switch state based on which button user clicks,
|
||||
// therefore we should enforce user to click one of the buttons
|
||||
// by disallowing dialog dismiss through tapping outside of dialog bounds.
|
||||
dialog.setCancelable(false);
|
||||
final FragmentManager manager = host.getActivity().getSupportFragmentManager();
|
||||
dialog.show(manager, TAG);
|
||||
}
|
||||
|
@@ -81,6 +81,11 @@ public class GraphicsDriverEnableAngleAsSystemDriverController
|
||||
this(context, fragment, new Injector());
|
||||
}
|
||||
|
||||
private boolean isAngleSupported() {
|
||||
return TextUtils.equals(
|
||||
mSystemProperties.get(PROPERTY_RO_GFX_ANGLE_SUPPORTED, ""), "true");
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
GraphicsDriverEnableAngleAsSystemDriverController(
|
||||
Context context, DevelopmentSettingsDashboardFragment fragment, Injector injector) {
|
||||
@@ -118,38 +123,44 @@ public class GraphicsDriverEnableAngleAsSystemDriverController
|
||||
this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
// set switch on if "persist.graphics.egl" is "angle" and angle is built in /vendor
|
||||
// set switch off otherwise.
|
||||
/** Return the default value of "persist.graphics.egl" */
|
||||
public boolean isDefaultValue() {
|
||||
if (!isAngleSupported()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
final String currentGlesDriver =
|
||||
mSystemProperties.get(PROPERTY_PERSISTENT_GRAPHICS_EGL, "");
|
||||
final boolean isAngle = TextUtils.equals(ANGLE_DRIVER_SUFFIX, currentGlesDriver);
|
||||
final boolean isAngleSupported =
|
||||
TextUtils.equals(
|
||||
mSystemProperties.get(PROPERTY_RO_GFX_ANGLE_SUPPORTED, ""), "true");
|
||||
((SwitchPreference) mPreference).setChecked(isAngle && isAngleSupported);
|
||||
((SwitchPreference) mPreference).setEnabled(isAngleSupported);
|
||||
// default value of "persist.graphics.egl" is ""
|
||||
return TextUtils.isEmpty(currentGlesDriver);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDeveloperOptionsSwitchEnabled() {
|
||||
// only enable the switch if ro.gfx.angle.supported is true
|
||||
// we use ro.gfx.angle.supported to indicate if ANGLE libs are installed under /vendor
|
||||
final boolean isAngleSupported =
|
||||
TextUtils.equals(
|
||||
mSystemProperties.get(PROPERTY_RO_GFX_ANGLE_SUPPORTED, ""), "true");
|
||||
((SwitchPreference) mPreference).setEnabled(isAngleSupported);
|
||||
public void updateState(Preference preference) {
|
||||
super.updateState(preference);
|
||||
if (isAngleSupported()) {
|
||||
// set switch on if "persist.graphics.egl" is "angle" and angle is built in /vendor
|
||||
// set switch off otherwise.
|
||||
final String currentGlesDriver =
|
||||
mSystemProperties.get(PROPERTY_PERSISTENT_GRAPHICS_EGL, "");
|
||||
final boolean isAngle = TextUtils.equals(ANGLE_DRIVER_SUFFIX, currentGlesDriver);
|
||||
((SwitchPreference) mPreference).setChecked(isAngle);
|
||||
} else {
|
||||
mPreference.setEnabled(false);
|
||||
((SwitchPreference) mPreference).setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDeveloperOptionsSwitchDisabled() {
|
||||
// 1) set the persist.graphics.egl empty string
|
||||
GraphicsEnvironment.getInstance().toggleAngleAsSystemDriver(false);
|
||||
// 2) reset the switch
|
||||
((SwitchPreference) mPreference).setChecked(false);
|
||||
// 3) disable switch
|
||||
((SwitchPreference) mPreference).setEnabled(false);
|
||||
// 1) disable the switch
|
||||
super.onDeveloperOptionsSwitchDisabled();
|
||||
if (isAngleSupported()) {
|
||||
// 2) set the persist.graphics.egl empty string
|
||||
GraphicsEnvironment.getInstance().toggleAngleAsSystemDriver(false);
|
||||
// 3) reset the switch
|
||||
((SwitchPreference) mPreference).setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
void toggleSwitchBack() {
|
||||
|
Reference in New Issue
Block a user