diff options
Diffstat (limited to 'libs/hwui/RenderProperties.h')
| -rw-r--r-- | libs/hwui/RenderProperties.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/libs/hwui/RenderProperties.h b/libs/hwui/RenderProperties.h index 61e98d22e427..a43566d91a5d 100644 --- a/libs/hwui/RenderProperties.h +++ b/libs/hwui/RenderProperties.h @@ -73,10 +73,6 @@ public: return false; } - LayerType type() const { - return mType; - } - bool setOpaque(bool opaque) { return RP_SET(mOpaque, opaque); } @@ -122,6 +118,11 @@ private: ~LayerProperties(); void reset(); + // Private since external users should go through properties().effectiveLayerType() + LayerType type() const { + return mType; + } + friend class RenderProperties; LayerType mType = LayerType::None; @@ -575,6 +576,17 @@ public: && getOutline().getAlpha() != 0.0f; } + LayerType effectiveLayerType() const { + LayerType type = mLayerProperties.mType; + if (type == LayerType::None + && !MathUtils::isZero(mPrimitiveFields.mAlpha) + && mPrimitiveFields.mAlpha < 1 + && mPrimitiveFields.mHasOverlappingRendering) { + return LayerType::RenderLayer; + } + return type; + } + private: // Rendering properties struct PrimitiveFields { |