Revert "SaveLayerRec::fClipMask -> raw pointer"
authorMike Klein <mtklein@chromium.org>
Mon, 1 May 2017 21:31:32 +0000 (21:31 +0000)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Mon, 1 May 2017 21:31:40 +0000 (21:31 +0000)
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>

14 files changed:
gm/savelayer.cpp
include/core/SkCanvas.h
include/private/SkRecords.h
src/core/SkCanvas.cpp
src/core/SkColorSpaceXformCanvas.cpp
src/core/SkLiteDL.cpp
src/core/SkLiteDL.h
src/core/SkPicturePlayback.cpp
src/core/SkPictureRecord.cpp
src/core/SkRecordDraw.cpp
src/core/SkRecorder.cpp
src/pipe/SkPipeCanvas.cpp
src/pipe/SkPipeReader.cpp
tests/RecordOptsTest.cpp

index dd7ff7b..245785e 100644 (file)
@@ -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) {
index 06e2620..197fad8 100644 (file)
@@ -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;
     };
index 4d7b217..f1886f3 100644 (file)
@@ -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);
 
index c09e6cb..c7e1d6e 100644 (file)
@@ -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())
     {}
 
index 2d62458..b4dd5bb 100644 (file)
@@ -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,
         });
index 71cbf68..f840607 100644 (file)
@@ -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); }
index f8e7910..5219cd0 100644 (file)
@@ -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();
 
index 3af7909..84228d0 100644 (file)
@@ -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);
index 608c6b3..ea4273f 100644 (file)
@@ -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);
index 9e8d6fc..02c8c69 100644 (file)
@@ -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)));
index 3fdc17d..c9d88fc 100644 (file)
@@ -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;
index 7b665d9..91e74ee 100644 (file)
@@ -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);
index 07b360c..73ef970 100644 (file)
@@ -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));
 }
 
index cb80987..d34959a 100644 (file)
@@ -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);