diff options
author | 2021-07-16 14:38:11 -0700 | |
---|---|---|
committer | 2021-07-16 22:33:39 +0000 | |
commit | 074ba590e64013bfa49b5d0da88674603e897fd5 (patch) | |
tree | bf6f97f32888415cf77dda5a1bebdc2a7ad3acd1 | |
parent | c9d121cd948c86ccaafa37d36e4a0166c478a4d6 (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.cpp | 20 | ||||
-rw-r--r-- | libs/hwui/Properties.h | 7 |
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); |