diff options
author | Mike Klein <mtklein@chromium.org> | 2017-05-01 21:31:32 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-01 21:31:40 +0000 |
commit | 3354969a4a4adcea159f3a0b01ad0a7c04fc9115 (patch) | |
tree | 13252cb3eb06b80d7a05f8063ac339e1847c84d5 | |
parent | c59a38d12dce287427f3d3fe1d4b3ad8052cda35 (diff) |
Revert "SaveLayerRec::fClipMask -> raw pointer"
This reverts commit a6b72cb5729306fdd676d739c1e2c53afa0786a7.
Reason for revert: red bots
Original change's description:
> SaveLayerRec::fClipMask -> raw pointer
>
> Use raw pointers for optional clip mask plumbing, to match the backdrop
> API.
>
> Change-Id: I7eb0ee5896faf34cc05789ba0703f35a4ab6a4f2
> Reviewed-on: https://skia-review.googlesource.com/14901
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Florin Malita <fmalita@chromium.org>
>
TBR=fmalita@chromium.org,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I4387620cdc3410018af9cef221e5cf8d09015380
Reviewed-on: https://skia-review.googlesource.com/14955
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | gm/savelayer.cpp | 4 | ||||
-rw-r--r-- | include/core/SkCanvas.h | 6 | ||||
-rw-r--r-- | include/private/SkRecords.h | 2 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 4 | ||||
-rw-r--r-- | src/core/SkColorSpaceXformCanvas.cpp | 4 | ||||
-rw-r--r-- | src/core/SkLiteDL.cpp | 12 | ||||
-rw-r--r-- | src/core/SkLiteDL.h | 2 | ||||
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 2 | ||||
-rw-r--r-- | src/core/SkPictureRecord.cpp | 2 | ||||
-rw-r--r-- | src/core/SkRecordDraw.cpp | 2 | ||||
-rw-r--r-- | src/core/SkRecorder.cpp | 2 | ||||
-rw-r--r-- | src/pipe/SkPipeCanvas.cpp | 2 | ||||
-rw-r--r-- | src/pipe/SkPipeReader.cpp | 2 | ||||
-rw-r--r-- | tests/RecordOptsTest.cpp | 3 |
14 files changed, 23 insertions, 26 deletions
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp index dd7ff7b54e..245785e951 100644 --- a/gm/savelayer.cpp +++ b/gm/savelayer.cpp @@ -210,8 +210,8 @@ DEF_SIMPLE_GM(savelayer_clipmask, canvas, 1200, 1200) { rec.fPaint = &layerPaint; for (const auto& maskMaker : kMaskMakers) { - sk_sp<SkImage> mask = maskMaker(kSize); - rec.fClipMask = mask.get(); + maskMaker(kSize); + rec.fClipMask = maskMaker(kSize); canvas->save(); for (const auto cfg : kConfigs) { diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index 06e26208ab..197fad8919 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -336,10 +336,8 @@ public: , fBackdrop(backdrop) , fSaveLayerFlags(saveLayerFlags) {} - - // EXPERIMENTAL: not ready for general use. SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, - const SkImage* clipMask, const SkMatrix* clipMatrix, + sk_sp<SkImage> clipMask, const SkMatrix* clipMatrix, SaveLayerFlags saveLayerFlags) : fBounds(bounds) , fPaint(paint) @@ -352,7 +350,7 @@ public: const SkRect* fBounds = nullptr; // optional const SkPaint* fPaint = nullptr; // optional const SkImageFilter* fBackdrop = nullptr; // optional - const SkImage* fClipMask = nullptr; // optional + sk_sp<SkImage> fClipMask; // optional const SkMatrix* fClipMatrix = nullptr; // optional -- only used with fClipMask SaveLayerFlags fSaveLayerFlags = 0; }; diff --git a/include/private/SkRecords.h b/include/private/SkRecords.h index 4d7b217f71..f1886f3e70 100644 --- a/include/private/SkRecords.h +++ b/include/private/SkRecords.h @@ -180,7 +180,7 @@ RECORD(SaveLayer, kHasPaint_Tag, Optional<SkRect> bounds; Optional<SkPaint> paint; sk_sp<const SkImageFilter> backdrop; - sk_sp<const SkImage> clipMask; + sk_sp<SkImage> clipMask; Optional<SkMatrix> clipMatrix; SkCanvas::SaveLayerFlags saveLayerFlags); diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index c09e6cbb7d..c7e1d6e898 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -257,12 +257,12 @@ struct DeviceCM { SkMatrix fClipMatrix; DeviceCM(sk_sp<SkBaseDevice> device, const SkPaint* paint, const SkMatrix& stashed, - const SkImage* clipImage, const SkMatrix* clipMatrix) + sk_sp<SkImage> clipImage, const SkMatrix* clipMatrix) : fNext(nullptr) , fDevice(std::move(device)) , fPaint(paint ? skstd::make_unique<SkPaint>(*paint) : nullptr) , fStashedMatrix(stashed) - , fClipImage(sk_ref_sp(const_cast<SkImage*>(clipImage))) + , fClipImage(std::move(clipImage)) , fClipMatrix(clipMatrix ? *clipMatrix : SkMatrix::I()) {} diff --git a/src/core/SkColorSpaceXformCanvas.cpp b/src/core/SkColorSpaceXformCanvas.cpp index 2d62458b73..b4dd5bb1c4 100644 --- a/src/core/SkColorSpaceXformCanvas.cpp +++ b/src/core/SkColorSpaceXformCanvas.cpp @@ -229,12 +229,12 @@ public: SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& rec) override { sk_sp<SkImageFilter> backdrop = rec.fBackdrop ? fXformer->apply(rec.fBackdrop) : nullptr; - sk_sp<SkImage> clipMask = rec.fClipMask ? fXformer->apply(rec.fClipMask) : nullptr; + sk_sp<SkImage> clipMask = rec.fClipMask ? fXformer->apply(rec.fClipMask.get()) : nullptr; fTarget->saveLayer({ rec.fBounds, MaybePaint(rec.fPaint, fXformer.get()), backdrop.get(), - clipMask.get(), + std::move(clipMask), rec.fClipMatrix, rec.fSaveLayerFlags, }); diff --git a/src/core/SkLiteDL.cpp b/src/core/SkLiteDL.cpp index 71cbf681eb..f84060751e 100644 --- a/src/core/SkLiteDL.cpp +++ b/src/core/SkLiteDL.cpp @@ -91,23 +91,23 @@ namespace { struct SaveLayer final : Op { static const auto kType = Type::SaveLayer; SaveLayer(const SkRect* bounds, const SkPaint* paint, - const SkImageFilter* backdrop, const SkImage* clipMask, + const SkImageFilter* backdrop, sk_sp<SkImage> clipMask, const SkMatrix* clipMatrix, SkCanvas::SaveLayerFlags flags) { if (bounds) { this->bounds = *bounds; } if (paint) { this->paint = *paint; } this->backdrop = sk_ref_sp(backdrop); - this->clipMask = sk_ref_sp(clipMask); + this->clipMask = std::move(clipMask); this->clipMatrix = clipMatrix ? *clipMatrix : SkMatrix::I(); this->flags = flags; } SkRect bounds = kUnset; SkPaint paint; sk_sp<const SkImageFilter> backdrop; - sk_sp<const SkImage> clipMask; + sk_sp<SkImage> clipMask; SkMatrix clipMatrix; SkCanvas::SaveLayerFlags flags; void draw(SkCanvas* c, const SkMatrix&) const { - c->saveLayer({ maybe_unset(bounds), &paint, backdrop.get(), clipMask.get(), + c->saveLayer({ maybe_unset(bounds), &paint, backdrop.get(), clipMask, clipMatrix.isIdentity() ? nullptr : &clipMatrix, flags }); } }; @@ -550,9 +550,9 @@ void SkLiteDL::setDrawFilter(SkDrawFilter* df) { void SkLiteDL:: save() { this->push <Save>(0); } void SkLiteDL::restore() { this->push<Restore>(0); } void SkLiteDL::saveLayer(const SkRect* bounds, const SkPaint* paint, - const SkImageFilter* backdrop, const SkImage* clipMask, + const SkImageFilter* backdrop, sk_sp<SkImage> clipMask, const SkMatrix* clipMatrix, SkCanvas::SaveLayerFlags flags) { - this->push<SaveLayer>(0, bounds, paint, backdrop, clipMask, clipMatrix, flags); + this->push<SaveLayer>(0, bounds, paint, backdrop, std::move(clipMask), clipMatrix, flags); } void SkLiteDL:: concat(const SkMatrix& matrix) { this->push <Concat>(0, matrix); } diff --git a/src/core/SkLiteDL.h b/src/core/SkLiteDL.h index f8e7910c82..5219cd002c 100644 --- a/src/core/SkLiteDL.h +++ b/src/core/SkLiteDL.h @@ -29,7 +29,7 @@ public: #endif void save(); - void saveLayer(const SkRect*, const SkPaint*, const SkImageFilter*, const SkImage*, + void saveLayer(const SkRect*, const SkPaint*, const SkImageFilter*, sk_sp<SkImage>, const SkMatrix*, SkCanvas::SaveLayerFlags); void restore(); diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index 3af7909eff..84228d0359 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -744,7 +744,7 @@ void SkPicturePlayback::handleOp(SkReadBuffer* reader, rec.fSaveLayerFlags = reader->readInt(); } if (flatFlags & SAVELAYERREC_HAS_CLIPMASK) { - rec.fClipMask = fPictureData->getImage(reader); + rec.fClipMask = sk_ref_sp(const_cast<SkImage*>(fPictureData->getImage(reader))); } if (flatFlags & SAVELAYERREC_HAS_CLIPMATRIX) { reader->readMatrix(&clipMatrix); diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp index 608c6b3997..ea4273f582 100644 --- a/src/core/SkPictureRecord.cpp +++ b/src/core/SkPictureRecord.cpp @@ -125,7 +125,7 @@ void SkPictureRecord::recordSaveLayer(const SaveLayerRec& rec) { this->addInt(rec.fSaveLayerFlags); } if (flatFlags & SAVELAYERREC_HAS_CLIPMASK) { - this->addImage(rec.fClipMask); + this->addImage(rec.fClipMask.get()); } if (flatFlags & SAVELAYERREC_HAS_CLIPMATRIX) { this->addMatrix(*rec.fClipMatrix); diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp index 9e8d6fcea2..02c8c69c8e 100644 --- a/src/core/SkRecordDraw.cpp +++ b/src/core/SkRecordDraw.cpp @@ -77,7 +77,7 @@ DRAW(Save, save()); DRAW(SaveLayer, saveLayer(SkCanvas::SaveLayerRec(r.bounds, r.paint, r.backdrop.get(), - r.clipMask.get(), + r.clipMask, r.clipMatrix, r.saveLayerFlags))); DRAW(SetMatrix, setMatrix(SkMatrix::Concat(fInitialCTM, r.matrix))); diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp index 3fdc17dfbf..c9d88fc503 100644 --- a/src/core/SkRecorder.cpp +++ b/src/core/SkRecorder.cpp @@ -366,7 +366,7 @@ SkCanvas::SaveLayerStrategy SkRecorder::getSaveLayerStrategy(const SaveLayerRec& APPEND(SaveLayer, this->copy(rec.fBounds) , this->copy(rec.fPaint) , sk_ref_sp(rec.fBackdrop) - , sk_ref_sp(rec.fClipMask) + , rec.fClipMask , this->copy(rec.fClipMatrix) , rec.fSaveLayerFlags); return SkCanvas::kNoLayer_SaveLayerStrategy; diff --git a/src/pipe/SkPipeCanvas.cpp b/src/pipe/SkPipeCanvas.cpp index 7b665d9968..91e74eeca5 100644 --- a/src/pipe/SkPipeCanvas.cpp +++ b/src/pipe/SkPipeCanvas.cpp @@ -258,7 +258,7 @@ SkCanvas::SaveLayerStrategy SkPipeCanvas::getSaveLayerStrategy(const SaveLayerRe writer.writeFlattenable(rec.fBackdrop); } if (rec.fClipMask) { - writer.writeImage(rec.fClipMask); + writer.writeImage(rec.fClipMask.get()); } if (rec.fClipMatrix) { writer.writeMatrix(*rec.fClipMatrix); diff --git a/src/pipe/SkPipeReader.cpp b/src/pipe/SkPipeReader.cpp index 07b360c28c..73ef970c1b 100644 --- a/src/pipe/SkPipeReader.cpp +++ b/src/pipe/SkPipeReader.cpp @@ -259,7 +259,7 @@ static void saveLayer_handler(SkPipeReader& reader, uint32_t packedVerb, SkCanva flags |= (1 << 31);//SkCanvas::kDontClipToLayer_PrivateSaveLayerFlag; } - canvas->saveLayer(SkCanvas::SaveLayerRec(bounds, paint, backdrop.get(), clipMask.get(), + canvas->saveLayer(SkCanvas::SaveLayerRec(bounds, paint, backdrop.get(), std::move(clipMask), (extra & kHasClipMatrix_SaveLayerMask) ? &clipMatrix : nullptr, flags)); } diff --git a/tests/RecordOptsTest.cpp b/tests/RecordOptsTest.cpp index cb80987211..d34959af5d 100644 --- a/tests/RecordOptsTest.cpp +++ b/tests/RecordOptsTest.cpp @@ -198,8 +198,7 @@ DEF_TEST(RecordOpts_NoopSaveLayerDrawRestore, r) { // saveLayer w/ clip mask should also NOT go away { sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(10, 10)); - recorder.saveLayer({ nullptr, nullptr, nullptr, surface->makeImageSnapshot().get(), - nullptr, 0}); + recorder.saveLayer({ nullptr, nullptr, nullptr, surface->makeImageSnapshot(), nullptr, 0}); recorder.drawRect(draw, opaqueDrawPaint); recorder.restore(); assert_savelayer_draw_restore(r, &record, 21, false); |