diff options
author | Florin Malita <fmalita@chromium.org> | 2018-01-05 11:32:31 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-05 18:08:31 +0000 |
commit | c14f144484eff57f6861766510876d83b9046fa6 (patch) | |
tree | 2f363a7339c8995821cbd5755afdb9a2fda9a980 /experimental/sksg/SkSGGeometryNode.cpp | |
parent | f470b7ecf0ad3910e96414a3d93db61c422ba917 (diff) |
[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 <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'experimental/sksg/SkSGGeometryNode.cpp')
-rw-r--r-- | experimental/sksg/SkSGGeometryNode.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
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); |