Skip to content

Commit b04f7e9

Browse files
author
Romain Guy
committed
Make it easier to enable dirty regions debugging
adb shell setprop hwui.debug_dirty_regions true Change-Id: Ifd269c443f5257b1e9c4ea987b134dcf6231106c
1 parent 91ec0b7 commit b04f7e9

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

core/java/android/view/HardwareRenderer.java

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,12 @@ public abstract class HardwareRenderer {
109109

110110
/**
111111
* Turn on to draw dirty regions every other frame.
112+
*
113+
* Possible values:
114+
* "true", to enable dirty regions debugging
115+
* "false", to disable dirty regions debugging
112116
*/
113-
private static final boolean DEBUG_DIRTY_REGION = false;
117+
static final String DEBUG_DIRTY_REGIONS_PROPERTY = "hwui.debug_dirty_regions";
114118

115119
/**
116120
* A process can set this flag to false to prevent the use of hardware
@@ -491,6 +495,8 @@ static abstract class GlRenderer extends HardwareRenderer {
491495
final boolean mProfileEnabled;
492496
final float[] mProfileData;
493497
int mProfileCurrentFrame = -PROFILE_FRAME_DATA_COUNT;
498+
499+
final boolean mDebugDirtyRegions;
494500

495501
final int mGlVersion;
496502
final boolean mTranslucent;
@@ -502,17 +508,19 @@ static abstract class GlRenderer extends HardwareRenderer {
502508
GlRenderer(int glVersion, boolean translucent) {
503509
mGlVersion = glVersion;
504510
mTranslucent = translucent;
511+
512+
String property;
505513

506-
final String vsyncProperty = SystemProperties.get(DISABLE_VSYNC_PROPERTY, "false");
507-
mVsyncDisabled = "true".equalsIgnoreCase(vsyncProperty);
514+
property = SystemProperties.get(DISABLE_VSYNC_PROPERTY, "false");
515+
mVsyncDisabled = "true".equalsIgnoreCase(property);
508516
if (mVsyncDisabled) {
509517
Log.d(LOG_TAG, "Disabling v-sync");
510518
}
511519

512520
//noinspection PointlessBooleanExpression,ConstantConditions
513521
if (!ViewDebug.DEBUG_LATENCY) {
514-
final String profileProperty = SystemProperties.get(PROFILE_PROPERTY, "false");
515-
mProfileEnabled = "true".equalsIgnoreCase(profileProperty);
522+
property = SystemProperties.get(PROFILE_PROPERTY, "false");
523+
mProfileEnabled = "true".equalsIgnoreCase(property);
516524
if (mProfileEnabled) {
517525
Log.d(LOG_TAG, "Profiling hardware renderer");
518526
}
@@ -525,6 +533,12 @@ static abstract class GlRenderer extends HardwareRenderer {
525533
} else {
526534
mProfileData = null;
527535
}
536+
537+
property = SystemProperties.get(DEBUG_DIRTY_REGIONS_PROPERTY, "false");
538+
mDebugDirtyRegions = "true".equalsIgnoreCase(property);
539+
if (mDebugDirtyRegions) {
540+
Log.d(LOG_TAG, "Debugging dirty regions");
541+
}
528542
}
529543

530544
@Override
@@ -981,8 +995,12 @@ boolean draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callba
981995
// Shouldn't reach here
982996
view.draw(canvas);
983997
}
998+
} finally {
999+
callbacks.onHardwarePostDraw(canvas);
1000+
canvas.restoreToCount(saveCount);
1001+
view.mRecreateDisplayList = false;
9841002

985-
if (DEBUG_DIRTY_REGION) {
1003+
if (mDebugDirtyRegions) {
9861004
if (mDebugPaint == null) {
9871005
mDebugPaint = new Paint();
9881006
mDebugPaint.setColor(0x7fff0000);
@@ -991,10 +1009,6 @@ boolean draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callba
9911009
canvas.drawRect(dirty, mDebugPaint);
9921010
}
9931011
}
994-
} finally {
995-
callbacks.onHardwarePostDraw(canvas);
996-
canvas.restoreToCount(saveCount);
997-
view.mRecreateDisplayList = false;
9981012
}
9991013

10001014
onPostDraw();

0 commit comments

Comments
 (0)