| Index: src/core/SkPicturePlayback.cpp
|
| ===================================================================
|
| --- src/core/SkPicturePlayback.cpp (revision 8135)
|
| +++ src/core/SkPicturePlayback.cpp (working copy)
|
| @@ -715,23 +715,34 @@
|
| size_t curOffset = reader.offset();
|
| uint32_t size;
|
| DrawType op = read_op_and_size(&reader, &size);
|
| - if (NOOP == op) {
|
| + size_t skipTo = 0;
|
| +#ifdef SK_DEVELOPER
|
| + // TODO: once chunk sizes are in all .skps just use
|
| + // "curOffset + size"
|
| + skipTo = this->preDraw(curOffset, op);
|
| +#endif
|
| + if (0 == skipTo && NOOP == op) {
|
| // NOOPs are to be ignored - do not propagate them any further
|
| - reader.setOffset(curOffset+size);
|
| - continue;
|
| + skipTo = curOffset + size;
|
| }
|
|
|
| -#ifdef SK_DEVELOPER
|
| - // TODO: once chunk sizes are in all .skps just use "curOffset + size"
|
| - size_t skipTo = this->preDraw(curOffset, op);
|
| if (0 != skipTo) {
|
| + if (it.isValid()) {
|
| + // If using a bounding box hierarchy, advance the state tree
|
| + // iterator until at or after skipTo
|
| + uint32_t adjustedSkipTo;
|
| + do {
|
| + adjustedSkipTo = it.draw();
|
| + } while (adjustedSkipTo < skipTo);
|
| + skipTo = adjustedSkipTo;
|
| + }
|
| if (kDrawComplete == skipTo) {
|
| break;
|
| }
|
| reader.setOffset(skipTo);
|
| continue;
|
| }
|
| -#endif
|
| +
|
| switch (op) {
|
| case CLIP_PATH: {
|
| const SkPath& path = getPath(reader);
|
|
|