New developer setting: force 4x MSAA

Change-Id: I443b97ad8adc9f461aa140069f208f83f19f8c52
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6eb2a26..abdc521 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3967,6 +3967,11 @@
     <!-- UI debug setting: force hardware acceleration summary [CHAR LIMIT=50] -->
     <string name="force_hw_ui_summary">Force use of GPU for 2d drawing</string>
 
+    <!-- UI debug setting: force anti-aliasing to render apps [CHAR LIMIT=25] -->
+    <string name="force_msaa">Force 4x MSAA</string>
+    <!-- UI debug setting: force anti-aliasing summary [CHAR LIMIT=50] -->
+    <string name="force_msaa_summary">Enable 4x MSAA in OpenGL ES 2.0 apps</string>
+
     <!-- UI debug setting: profile time taken by hardware acceleration to render apps [CHAR LIMIT=25] -->
     <string name="track_frame_time">Profile GPU rendering</string>
     <!-- UI debug setting: profile hardware acceleration summary [CHAR LIMIT=50] -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 8fdb03f..1f08eaa 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -156,6 +156,11 @@
             android:title="@string/force_hw_ui"
             android:summary="@string/force_hw_ui_summary"/>
 
+        <CheckBoxPreference
+            android:key="force_msaa"
+            android:title="@string/force_msaa"
+            android:summary="@string/force_msaa_summary"/>
+
         <ListPreference
             android:key="overlay_display_devices"
             android:title="@string/overlay_display_devices_title"
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index d1f9b55..0ad6a91 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -93,6 +93,7 @@
     private static final String ENFORCE_READ_EXTERNAL = "enforce_read_external";
     private static final String LOCAL_BACKUP_PASSWORD = "local_backup_password";
     private static final String HARDWARE_UI_PROPERTY = "persist.sys.ui.hw";
+    private static final String MSAA_PROPERTY = "debug.egl.force_msaa";
     private static final String BUGREPORT_IN_POWER_KEY = "bugreport_in_power";
 
     private static final String DEBUG_APP_KEY = "debug_app";
@@ -105,6 +106,7 @@
     private static final String DISABLE_OVERLAYS_KEY = "disable_overlays";
     private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
     private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui";
+    private static final String FORCE_MSAA_KEY = "force_msaa";
     private static final String TRACK_FRAME_TIME_KEY = "track_frame_time";
     private static final String SHOW_HW_SCREEN_UPDATES_KEY = "show_hw_screen_udpates";
     private static final String SHOW_HW_LAYERS_UPDATES_KEY = "show_hw_layers_udpates";
@@ -158,6 +160,7 @@
     private CheckBoxPreference mDisableOverlays;
     private CheckBoxPreference mShowCpuUsage;
     private CheckBoxPreference mForceHardwareUi;
+    private CheckBoxPreference mForceMsaa;
     private CheckBoxPreference mTrackFrameTime;
     private CheckBoxPreference mShowHwScreenUpdates;
     private CheckBoxPreference mShowHwLayersUpdates;
@@ -224,6 +227,7 @@
         mDisableOverlays = findAndInitCheckboxPref(DISABLE_OVERLAYS_KEY);
         mShowCpuUsage = findAndInitCheckboxPref(SHOW_CPU_USAGE_KEY);
         mForceHardwareUi = findAndInitCheckboxPref(FORCE_HARDWARE_UI_KEY);
+        mForceMsaa = findAndInitCheckboxPref(FORCE_MSAA_KEY);
         mTrackFrameTime = findAndInitCheckboxPref(TRACK_FRAME_TIME_KEY);
         mShowHwScreenUpdates = findAndInitCheckboxPref(SHOW_HW_SCREEN_UPDATES_KEY);
         mShowHwLayersUpdates = findAndInitCheckboxPref(SHOW_HW_LAYERS_UPDATES_KEY);
@@ -393,6 +397,7 @@
         updateFlingerOptions();
         updateCpuUsageOptions();
         updateHardwareUiOptions();
+        updateMsaaOptions();
         updateTrackFrameTimeOptions();
         updateShowHwScreenUpdatesOptions();
         updateShowHwLayersUpdatesOptions();
@@ -650,6 +655,15 @@
         pokeSystemProperties();
     }
 
+    private void updateMsaaOptions() {
+        updateCheckBox(mForceMsaa, SystemProperties.getBoolean(MSAA_PROPERTY, false));
+    }
+
+    private void writeMsaaOptions() {
+        SystemProperties.set(MSAA_PROPERTY, mForceMsaa.isChecked() ? "true" : "false");
+        pokeSystemProperties();
+    }
+
     private void updateTrackFrameTimeOptions() {
         updateCheckBox(mTrackFrameTime,
                 SystemProperties.getBoolean(HardwareRenderer.PROFILE_PROPERTY, false));
@@ -987,6 +1001,8 @@
             writeShowAllANRsOptions();
         } else if (preference == mForceHardwareUi) {
             writeHardwareUiOptions();
+        } else if (preference == mForceMsaa) {
+            writeMsaaOptions();
         } else if (preference == mTrackFrameTime) {
             writeTrackFrameTimeOptions();
         } else if (preference == mShowHwScreenUpdates) {