summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/HardwareRenderer.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index 1932c7f39608..67466a4f60b9 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -109,8 +109,12 @@ public abstract class HardwareRenderer {
/**
* Turn on to draw dirty regions every other frame.
+ *
+ * Possible values:
+ * "true", to enable dirty regions debugging
+ * "false", to disable dirty regions debugging
*/
- private static final boolean DEBUG_DIRTY_REGION = false;
+ static final String DEBUG_DIRTY_REGIONS_PROPERTY = "hwui.debug_dirty_regions";
/**
* A process can set this flag to false to prevent the use of hardware
@@ -491,6 +495,8 @@ public abstract class HardwareRenderer {
final boolean mProfileEnabled;
final float[] mProfileData;
int mProfileCurrentFrame = -PROFILE_FRAME_DATA_COUNT;
+
+ final boolean mDebugDirtyRegions;
final int mGlVersion;
final boolean mTranslucent;
@@ -502,17 +508,19 @@ public abstract class HardwareRenderer {
GlRenderer(int glVersion, boolean translucent) {
mGlVersion = glVersion;
mTranslucent = translucent;
+
+ String property;
- final String vsyncProperty = SystemProperties.get(DISABLE_VSYNC_PROPERTY, "false");
- mVsyncDisabled = "true".equalsIgnoreCase(vsyncProperty);
+ property = SystemProperties.get(DISABLE_VSYNC_PROPERTY, "false");
+ mVsyncDisabled = "true".equalsIgnoreCase(property);
if (mVsyncDisabled) {
Log.d(LOG_TAG, "Disabling v-sync");
}
//noinspection PointlessBooleanExpression,ConstantConditions
if (!ViewDebug.DEBUG_LATENCY) {
- final String profileProperty = SystemProperties.get(PROFILE_PROPERTY, "false");
- mProfileEnabled = "true".equalsIgnoreCase(profileProperty);
+ property = SystemProperties.get(PROFILE_PROPERTY, "false");
+ mProfileEnabled = "true".equalsIgnoreCase(property);
if (mProfileEnabled) {
Log.d(LOG_TAG, "Profiling hardware renderer");
}
@@ -525,6 +533,12 @@ public abstract class HardwareRenderer {
} else {
mProfileData = null;
}
+
+ property = SystemProperties.get(DEBUG_DIRTY_REGIONS_PROPERTY, "false");
+ mDebugDirtyRegions = "true".equalsIgnoreCase(property);
+ if (mDebugDirtyRegions) {
+ Log.d(LOG_TAG, "Debugging dirty regions");
+ }
}
@Override
@@ -981,8 +995,12 @@ public abstract class HardwareRenderer {
// Shouldn't reach here
view.draw(canvas);
}
+ } finally {
+ callbacks.onHardwarePostDraw(canvas);
+ canvas.restoreToCount(saveCount);
+ view.mRecreateDisplayList = false;
- if (DEBUG_DIRTY_REGION) {
+ if (mDebugDirtyRegions) {
if (mDebugPaint == null) {
mDebugPaint = new Paint();
mDebugPaint.setColor(0x7fff0000);
@@ -991,10 +1009,6 @@ public abstract class HardwareRenderer {
canvas.drawRect(dirty, mDebugPaint);
}
}
- } finally {
- callbacks.onHardwarePostDraw(canvas);
- canvas.restoreToCount(saveCount);
- view.mRecreateDisplayList = false;
}
onPostDraw();