summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Brett Chabot <brettchabot@google.com> 2021-07-16 14:38:11 -0700
committer Brett Chabot <brettchabot@google.com> 2021-07-16 22:33:39 +0000
commit074ba590e64013bfa49b5d0da88674603e897fd5 (patch)
treebf6f97f32888415cf77dda5a1bebdc2a7ad3acd1
parentc9d121cd948c86ccaafa37d36e4a0166c478a4d6 (diff)
Lazy load Properties::isDrawingEnabled.
Properties::isDrawingEnabled can unexpectedly return true even if the system property debug.hwui.drawing_enabled is false, if its called before RenderThread is created. This commit changes the underlying logic to lazy load the debug.hwui.drawing_enabled prop value. Bug: 193920054 Test: call HardwareRendererCompat.isDrawingEnabled()) from a new test Change-Id: Ib69577745c26595ed3964a4341086138dd5d34b0 (cherry picked from commit 8e1ab42f51c501949211746c46a02a7564ebf292)
-rw-r--r--libs/hwui/Properties.cpp20
-rw-r--r--libs/hwui/Properties.h7
2 files changed, 12 insertions, 15 deletions
diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp
index 18fab8ee5f92..c804418e8380 100644
--- a/libs/hwui/Properties.cpp
+++ b/libs/hwui/Properties.cpp
@@ -88,8 +88,7 @@ bool Properties::enableWebViewOverlays = false;
StretchEffectBehavior Properties::stretchEffectBehavior = StretchEffectBehavior::ShaderHWUI;
-bool Properties::drawingEnabled = true;
-OverrideDrawingEnabled Properties::overrideDrawingEnabled = OverrideDrawingEnabled::Default;
+DrawingEnabled Properties::drawingEnabled = DrawingEnabled::NotInitialized;
bool Properties::load() {
bool prevDebugLayersUpdates = debugLayersUpdates;
@@ -144,10 +143,8 @@ bool Properties::load() {
enableWebViewOverlays = base::GetBoolProperty(PROPERTY_WEBVIEW_OVERLAYS_ENABLED, false);
- drawingEnabled = base::GetBoolProperty(PROPERTY_DRAWING_ENABLED, true);
- if (!drawingEnabled) {
- enableRTAnimations = false;
- }
+ // call isDrawingEnabled to force loading of the property
+ isDrawingEnabled();
return (prevDebugLayersUpdates != debugLayersUpdates) || (prevDebugOverdraw != debugOverdraw);
}
@@ -219,16 +216,17 @@ void Properties::overrideRenderPipelineType(RenderPipelineType type, bool inUnit
}
void Properties::setDrawingEnabled(bool newDrawingEnabled) {
- overrideDrawingEnabled =
- newDrawingEnabled ? OverrideDrawingEnabled::On : OverrideDrawingEnabled::Off;
+ drawingEnabled = newDrawingEnabled ? DrawingEnabled::On : DrawingEnabled::Off;
enableRTAnimations = newDrawingEnabled;
}
bool Properties::isDrawingEnabled() {
- if (overrideDrawingEnabled == OverrideDrawingEnabled::Default) {
- return drawingEnabled;
+ if (drawingEnabled == DrawingEnabled::NotInitialized) {
+ bool drawingEnabledProp = base::GetBoolProperty(PROPERTY_DRAWING_ENABLED, true);
+ drawingEnabled = drawingEnabledProp ? DrawingEnabled::On : DrawingEnabled::Off;
+ enableRTAnimations = drawingEnabledProp;
}
- return overrideDrawingEnabled == OverrideDrawingEnabled::On;
+ return drawingEnabled == DrawingEnabled::On;
}
} // namespace uirenderer
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index 73fccb67800b..7f9782bf8d20 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -214,7 +214,7 @@ enum class StretchEffectBehavior {
UniformScale // Uniform scale stretch everywhere
};
-enum class OverrideDrawingEnabled { Default, On, Off };
+enum class DrawingEnabled { NotInitialized, On, Off };
/**
* Renderthread-only singleton which manages several static rendering properties. Most of these
@@ -309,9 +309,8 @@ public:
stretchEffectBehavior = behavior;
}
- // Represents if GL drawing is enabled. Should only be false in headless testing environments
- static bool drawingEnabled;
- static OverrideDrawingEnabled overrideDrawingEnabled;
+ // Represents if drawing is enabled. Should only be Off in headless testing environments
+ static DrawingEnabled drawingEnabled;
static bool isDrawingEnabled();
static void setDrawingEnabled(bool enable);