| Index: src/core/SkPictureRecord.cpp
|
| diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
|
| index 08b69b85271cec5d1ce3de314e5bdd1ec9dafe7b..a85ea8de0b314354f31fbe2b1e7ce28920558448 100644
|
| --- a/src/core/SkPictureRecord.cpp
|
| +++ b/src/core/SkPictureRecord.cpp
|
| @@ -146,7 +146,7 @@ static inline uint32_t getPaintOffset(DrawType op, uint32_t opSize) {
|
| return gPaintOffsets[op] * sizeof(uint32_t) + overflow;
|
| }
|
|
|
| -int SkPictureRecord::save(SaveFlags flags) {
|
| +void SkPictureRecord::willSave(SaveFlags flags) {
|
|
|
| #ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
|
| fMCMgr.save(flags);
|
| @@ -156,7 +156,8 @@ int SkPictureRecord::save(SaveFlags flags) {
|
| fRestoreOffsetStack.push(-(int32_t)fWriter.bytesWritten());
|
| this->recordSave(flags);
|
| #endif
|
| - return this->INHERITED::save(flags);
|
| +
|
| + this->INHERITED::willSave(flags);
|
| }
|
|
|
| void SkPictureRecord::recordSave(SaveFlags flags) {
|
| @@ -168,12 +169,11 @@ void SkPictureRecord::recordSave(SaveFlags flags) {
|
| this->validate(initialOffset, size);
|
| }
|
|
|
| -int SkPictureRecord::saveLayer(const SkRect* bounds, const SkPaint* paint,
|
| - SaveFlags flags) {
|
| +SkCanvas::SaveLayerStrategy SkPictureRecord::willSaveLayer(const SkRect* bounds,
|
| + const SkPaint* paint, SaveFlags flags) {
|
|
|
| - int count;
|
| #ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
|
| - count = fMCMgr.saveLayer(bounds, paint, flags);
|
| + fMCMgr.saveLayer(bounds, paint, flags);
|
| #else
|
| // record the offset to us, making it non-positive to distinguish a save
|
| // from a clip entry.
|
| @@ -184,15 +184,13 @@ int SkPictureRecord::saveLayer(const SkRect* bounds, const SkPaint* paint,
|
| }
|
| #endif
|
|
|
| - /* Don't actually call INHERITED::saveLayer, because that will try to allocate
|
| - an offscreen device (potentially very big) which we don't actually need
|
| + this->INHERITED::willSaveLayer(bounds, paint, flags);
|
| + /* No need for a (potentially very big) layer which we don't actually need
|
| at this time (and may not be able to afford since during record our
|
| clip starts out the size of the picture, which is often much larger
|
| than the size of the actual device we'll use during playback).
|
| */
|
| - count = this->INHERITED::save(flags);
|
| - this->clipRectBounds(bounds, flags, NULL);
|
| - return count;
|
| + return kNoLayer_SaveLayerStrategy;
|
| }
|
|
|
| void SkPictureRecord::recordSaveLayer(const SkRect* bounds, const SkPaint* paint,
|
| @@ -605,7 +603,7 @@ static void apply_optimization_to_bbh(PictureRecordOptType opt, SkPictureStateTr
|
| }
|
| }
|
|
|
| -void SkPictureRecord::restore() {
|
| +void SkPictureRecord::willRestore() {
|
| // FIXME: SkDeferredCanvas needs to be refactored to respect
|
| // save/restore balancing so that the following test can be
|
| // turned on permanently.
|
| @@ -653,7 +651,7 @@ void SkPictureRecord::restore() {
|
| fRestoreOffsetStack.pop();
|
| #endif
|
|
|
| - return this->INHERITED::restore();
|
| + this->INHERITED::willRestore();
|
| }
|
|
|
| void SkPictureRecord::recordRestore(bool fillInSkips) {
|
|
|