diff options
author | 2012-09-13 21:41:51 +0000 | |
---|---|---|
committer | 2012-09-13 21:41:51 +0000 | |
commit | 8515e79a7699922e0f95f93e8cc11d4c88657c58 (patch) | |
tree | dc78b3eeb9dea5e7efcb7b619171dc6526c7f39a /src/core/SkPictureStateTree.cpp | |
parent | ad0c5d248c5a33388f5b814f160266175b7771b1 (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.cpp | 12 |
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) { |