OSDN Git Service

Add new GPU overdraw setting
authorRomain Guy <romainguy@google.com>
Sat, 4 May 2013 00:38:38 +0000 (17:38 -0700)
committerRomain Guy <romainguy@google.com>
Sat, 4 May 2013 00:38:38 +0000 (17:38 -0700)
Change-Id: I45404b37df382e51eea42de92535f49f870c98b2

res/values/arrays.xml
res/values/strings.xml
res/xml/development_prefs.xml
src/com/android/settings/DevelopmentSettings.java

index 1a11ebb..e56ce01 100644 (file)
         <item>true</item>
     </string-array>
 
+    <!-- Titles for debug overdraw preference. [CHAR LIMIT=35] -->
+    <string-array name="debug_hw_overdraw_entries">
+        <item>Off</item>
+        <item>Show overdraw areas</item>
+        <item>Show overdraw counter</item>
+    </string-array>
+
+    <!-- Values for debug overdraw preference. -->
+    <string-array name="debug_hw_overdraw_values" translatable="false" >
+        <item>false</item>
+        <item>show</item>
+        <item>count</item>
+    </string-array>
+
     <!-- Titles for app process limit preference. [CHAR LIMIT=35] -->
     <string-array name="app_process_limit_entries">
         <item>Standard limit</item>
index 23dcf5b..e481b54 100644 (file)
     <string name="show_hw_layers_updates_summary">Flash hardware layers green when they update</string>
 
     <!-- UI debug setting: show the amount of overdraw in apps using the GPU [CHAR LIMIT=25] -->
-    <string name="show_hw_overdraw">Show GPU overdraw</string>
-    <!-- UI debug setting: Show the amount of overdraw summary [CHAR LIMIT=50] -->
-    <string name="show_hw_overdraw_summary">From best to worst: blue, green, light red, red</string>
+    <string name="debug_hw_overdraw">Debug GPU overdraw</string>
 
     <!-- UI debug setting: disable use of overlays? [CHAR LIMIT=25] -->
     <string name="disable_overlays">Disable HW overlays</string>
index 3d1383a..8265779 100644 (file)
                 android:title="@string/show_hw_layers_updates"
                 android:summary="@string/show_hw_layers_updates_summary"/>
 
-        <CheckBoxPreference
-                android:key="show_hw_overdraw"
-                android:title="@string/show_hw_overdraw"
-                android:summary="@string/show_hw_overdraw_summary"/>
+        <ListPreference
+                android:key="debug_hw_overdraw"
+                android:title="@string/debug_hw_overdraw"
+                android:persistent="false"
+                android:entries="@array/debug_hw_overdraw_entries"
+                android:entryValues="@array/debug_hw_overdraw_values" />
 
         <ListPreference
                 android:key="show_non_rect_clip"
index 07b2e59..4355f20 100644 (file)
@@ -48,7 +48,6 @@ import android.os.ServiceManager;
 import android.os.StrictMode;
 import android.os.SystemProperties;
 import android.os.UserHandle;
-import android.os.UserManager;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
@@ -120,7 +119,7 @@ public class DevelopmentSettings extends PreferenceFragment
     private static final String SHOW_NON_RECTANGULAR_CLIP_KEY = "show_non_rect_clip";
     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";
-    private static final String SHOW_HW_OVERDRAW_KEY = "show_hw_overdraw";
+    private static final String DEBUG_HW_OVERDRAW_KEY = "debug_hw_overdraw";
     private static final String DEBUG_LAYOUT_KEY = "debug_layout";
     private static final String WINDOW_ANIMATION_SCALE_KEY = "window_animation_scale";
     private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale";
@@ -181,8 +180,8 @@ public class DevelopmentSettings extends PreferenceFragment
     private CheckBoxPreference mForceMsaa;
     private CheckBoxPreference mShowHwScreenUpdates;
     private CheckBoxPreference mShowHwLayersUpdates;
-    private CheckBoxPreference mShowHwOverdraw;
     private CheckBoxPreference mDebugLayout;
+    private ListPreference mDebugHwOverdraw;
     private ListPreference mTrackFrameTime;
     private ListPreference mShowNonRectClip;
     private ListPreference mWindowAnimationScale;
@@ -282,8 +281,8 @@ public class DevelopmentSettings extends PreferenceFragment
         mShowNonRectClip = addListPreference(SHOW_NON_RECTANGULAR_CLIP_KEY);
         mShowHwScreenUpdates = findAndInitCheckboxPref(SHOW_HW_SCREEN_UPDATES_KEY);
         mShowHwLayersUpdates = findAndInitCheckboxPref(SHOW_HW_LAYERS_UPDATES_KEY);
-        mShowHwOverdraw = findAndInitCheckboxPref(SHOW_HW_OVERDRAW_KEY);
         mDebugLayout = findAndInitCheckboxPref(DEBUG_LAYOUT_KEY);
+        mDebugHwOverdraw = addListPreference(DEBUG_HW_OVERDRAW_KEY);
         mWindowAnimationScale = addListPreference(WINDOW_ANIMATION_SCALE_KEY);
         mTransitionAnimationScale = addListPreference(TRANSITION_ANIMATION_SCALE_KEY);
         mAnimatorDurationScale = addListPreference(ANIMATOR_DURATION_SCALE_KEY);
@@ -479,7 +478,7 @@ public class DevelopmentSettings extends PreferenceFragment
         updateShowNonRectClipOptions();
         updateShowHwScreenUpdatesOptions();
         updateShowHwLayersUpdatesOptions();
-        updateShowHwOverdrawOptions();
+        updateDebugHwOverdrawOptions();
         updateDebugLayoutOptions();
         updateAnimationScaleOptions();
         updateOverlayDisplayDevicesOptions();
@@ -835,15 +834,29 @@ public class DevelopmentSettings extends PreferenceFragment
         pokeSystemProperties();
     }
 
-    private void updateShowHwOverdrawOptions() {
-        updateCheckBox(mShowHwOverdraw, SystemProperties.getBoolean(
-                HardwareRenderer.DEBUG_SHOW_OVERDRAW_PROPERTY, false));
+    private void updateDebugHwOverdrawOptions() {
+        String value = SystemProperties.get(HardwareRenderer.DEBUG_OVERDRAW_PROPERTY);
+        if (value == null) {
+            value = "";
+        }
+
+        CharSequence[] values = mDebugHwOverdraw.getEntryValues();
+        for (int i = 0; i < values.length; i++) {
+            if (value.contentEquals(values[i])) {
+                mDebugHwOverdraw.setValueIndex(i);
+                mDebugHwOverdraw.setSummary(mDebugHwOverdraw.getEntries()[i]);
+                return;
+            }
+        }
+        mDebugHwOverdraw.setValueIndex(0);
+        mDebugHwOverdraw.setSummary(mDebugHwOverdraw.getEntries()[0]);
     }
 
-    private void writeShowHwOverdrawOptions() {
-        SystemProperties.set(HardwareRenderer.DEBUG_SHOW_OVERDRAW_PROPERTY,
-                mShowHwOverdraw.isChecked() ? "true" : null);
+    private void writeDebugHwOverdrawOptions(Object newValue) {
+        SystemProperties.set(HardwareRenderer.DEBUG_OVERDRAW_PROPERTY,
+                newValue == null ? "" : newValue.toString());
         pokeSystemProperties();
+        updateDebugHwOverdrawOptions();
     }
 
     private void updateDebugLayoutOptions() {
@@ -1158,8 +1171,6 @@ public class DevelopmentSettings extends PreferenceFragment
             writeShowHwScreenUpdatesOptions();
         } else if (preference == mShowHwLayersUpdates) {
             writeShowHwLayersUpdatesOptions();
-        } else if (preference == mShowHwOverdraw) {
-            writeShowHwOverdrawOptions();
         } else if (preference == mDebugLayout) {
             writeDebugLayoutOptions();
         }
@@ -1192,6 +1203,9 @@ public class DevelopmentSettings extends PreferenceFragment
         } else if (preference == mTrackFrameTime) {
             writeTrackFrameTimeOptions(newValue);
             return true;
+        } else if (preference == mDebugHwOverdraw) {
+            writeDebugHwOverdrawOptions(newValue);
+            return true;
         } else if (preference == mShowNonRectClip) {
             writeShowNonRectClipOptions(newValue);
             return true;