aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-05-01 21:31:32 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-01 21:31:40 +0000
commit3354969a4a4adcea159f3a0b01ad0a7c04fc9115 (patch)
tree13252cb3eb06b80d7a05f8063ac339e1847c84d5
parentc59a38d12dce287427f3d3fe1d4b3ad8052cda35 (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.cpp4
-rw-r--r--include/core/SkCanvas.h6
-rw-r--r--include/private/SkRecords.h2
-rw-r--r--src/core/SkCanvas.cpp4
-rw-r--r--src/core/SkColorSpaceXformCanvas.cpp4
-rw-r--r--src/core/SkLiteDL.cpp12
-rw-r--r--src/core/SkLiteDL.h2
-rw-r--r--src/core/SkPicturePlayback.cpp2
-rw-r--r--src/core/SkPictureRecord.cpp2
-rw-r--r--src/core/SkRecordDraw.cpp2
-rw-r--r--src/core/SkRecorder.cpp2
-rw-r--r--src/pipe/SkPipeCanvas.cpp2
-rw-r--r--src/pipe/SkPipeReader.cpp2
-rw-r--r--tests/RecordOptsTest.cpp3
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);