From c14f144484eff57f6861766510876d83b9046fa6 Mon Sep 17 00:00:00 2001 From: Florin Malita Date: Fri, 5 Jan 2018 11:32:31 -0500 Subject: [sksg] More inval fixes Backpedal on node/reval-time-determined damage: nodes cannot control the invalidation order, and shared descendants may be revalidated before a particular ancestor gets to query their state - thus making any decisions based on that invalid. Instead, apply damage suppression at invalidation time, based on node type/traits. Node types which don't generate direct damage are marked as such, and the invalidation logic bubbles damage past them, until it finds a valid damage receiver. Nodes which currently suppress damage: - PaintNode (and subclasses) - GeometryNode (and subclasses) - Matrix TBR= Change-Id: I843e683e64cb6253d8c26d8397c44d02a7d6026f Reviewed-on: https://skia-review.googlesource.com/91421 Reviewed-by: Florin Malita Commit-Queue: Florin Malita --- experimental/sksg/SkSGGeometryNode.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'experimental/sksg/SkSGGeometryNode.cpp') diff --git a/experimental/sksg/SkSGGeometryNode.cpp b/experimental/sksg/SkSGGeometryNode.cpp index cbc0d558e2..98022ad811 100644 --- a/experimental/sksg/SkSGGeometryNode.cpp +++ b/experimental/sksg/SkSGGeometryNode.cpp @@ -11,6 +11,9 @@ namespace sksg { +// Geometry nodes don't generate damage on their own, but via their aggregation ancestor Draw nodes. +GeometryNode::GeometryNode() : INHERITED(kBubbleDamage_Trait) {} + void GeometryNode::draw(SkCanvas* canvas, const SkPaint& paint) const { SkASSERT(!this->hasInval()); this->onDraw(canvas, paint); -- cgit v1.2.3