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: 201691826 Test: m Change-Id: I599426c8734d418f073fd0456c2b1149fb69d80c
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user