aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPictureStateTree.cpp
diff options
context:
space:
mode:
authorGravatar rileya@google.com <rileya@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-13 21:41:51 +0000
committerGravatar rileya@google.com <rileya@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-13 21:41:51 +0000
commit8515e79a7699922e0f95f93e8cc11d4c88657c58 (patch)
treedc78b3eeb9dea5e7efcb7b619171dc6526c7f39a /src/core/SkPictureStateTree.cpp
parentad0c5d248c5a33388f5b814f160266175b7771b1 (diff)
Add R-Tree record flag to SkPicture, plus some cleanup/fixes in associated classes.
Review URL: https://codereview.appspot.com/6506103 git-svn-id: http://skia.googlecode.com/svn/trunk@5537 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkPictureStateTree.cpp')
-rw-r--r--src/core/SkPictureStateTree.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/core/SkPictureStateTree.cpp b/src/core/SkPictureStateTree.cpp
index 8426c9e1bb..9299f8c8f8 100644
--- a/src/core/SkPictureStateTree.cpp
+++ b/src/core/SkPictureStateTree.cpp
@@ -80,21 +80,23 @@ void SkPictureStateTree::appendNode(uint32_t offset) {
}
SkPictureStateTree::Iterator::Iterator(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root)
- : fDraws(draws)
+ : fDraws(&draws)
, fCanvas(canvas)
, fCurrentNode(root)
, fPlaybackMatrix(canvas->getTotalMatrix())
, fCurrentMatrix(NULL)
, fPlaybackIndex(0)
- , fSave(false) {
+ , fSave(false)
+ , fValid(true) {
}
uint32_t SkPictureStateTree::Iterator::draw() {
- if (fPlaybackIndex >= fDraws.count()) {
+ SkASSERT(this->isValid());
+ if (fPlaybackIndex >= fDraws->count()) {
// restore back to where we started
if (fCurrentNode->fFlags & Node::kSaveLayer_Flag) { fCanvas->restore(); }
fCurrentNode = fCurrentNode->fParent;
- while (NULL != fCurrentNode->fParent) {
+ while (NULL != fCurrentNode) {
if (fCurrentNode->fFlags & Node::kSave_Flag) { fCanvas->restore(); }
if (fCurrentNode->fFlags & Node::kSaveLayer_Flag) { fCanvas->restore(); }
fCurrentNode = fCurrentNode->fParent;
@@ -103,7 +105,7 @@ uint32_t SkPictureStateTree::Iterator::draw() {
return kDrawComplete;
}
- Draw* draw = static_cast<Draw*>(fDraws[fPlaybackIndex]);
+ Draw* draw = static_cast<Draw*>((*fDraws)[fPlaybackIndex]);
Node* targetNode = draw->fNode;
if (fSave) {