diff options
author | 2016-07-25 08:05:22 -0700 | |
---|---|---|
committer | 2016-07-25 08:05:23 -0700 | |
commit | 2c9e20055be772feb3f44986c1af0c0a979eff49 (patch) | |
tree | 7c32fff13c4558094c16220a7f2547ff8fd9a3d2 /src | |
parent | d0e95a524c20932e0f4e68bab43995188a281395 (diff) |
remove fClipStack and attach/deattach-from-canvas
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2180793002
Review-Url: https://codereview.chromium.org/2180793002
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBitmapDevice.cpp | 18 | ||||
-rw-r--r-- | src/core/SkCanvas.cpp | 11 | ||||
-rw-r--r-- | src/core/SkDevice.cpp | 7 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 20 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.h | 4 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.cpp | 14 | ||||
-rw-r--r-- | src/pdf/SkPDFDevice.h | 4 |
7 files changed, 10 insertions, 68 deletions
diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp index dcdc55bbfb..4b25e21e86 100644 --- a/src/core/SkBitmapDevice.cpp +++ b/src/core/SkBitmapDevice.cpp @@ -70,8 +70,10 @@ static bool valid_for_bitmap_device(const SkImageInfo& info, SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap) : INHERITED(SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType)) - , fBitmap(bitmap) { + , fBitmap(bitmap) +{ SkASSERT(valid_for_bitmap_device(bitmap.info(), nullptr)); + fBitmap.lockPixels(); } SkBitmapDevice* SkBitmapDevice::Create(const SkImageInfo& info) { @@ -80,8 +82,10 @@ SkBitmapDevice* SkBitmapDevice::Create(const SkImageInfo& info) { SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap, const SkSurfaceProps& surfaceProps) : INHERITED(surfaceProps) - , fBitmap(bitmap) { + , fBitmap(bitmap) +{ SkASSERT(valid_for_bitmap_device(bitmap.info(), nullptr)); + fBitmap.lockPixels(); } SkBitmapDevice* SkBitmapDevice::Create(const SkImageInfo& origInfo, @@ -183,16 +187,6 @@ bool SkBitmapDevice::onReadPixels(const SkImageInfo& dstInfo, void* dstPixels, s return fBitmap.readPixels(dstInfo, dstPixels, dstRowBytes, x, y); } -void SkBitmapDevice::onAttachToCanvas(SkCanvas* canvas) { - INHERITED::onAttachToCanvas(canvas); - fBitmap.lockPixels(); -} - -void SkBitmapDevice::onDetachFromCanvas() { - INHERITED::onDetachFromCanvas(); - fBitmap.unlockPixels(); -} - /////////////////////////////////////////////////////////////////////////////// void SkBitmapDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 2cfe8ae2da..ffdcf9d5de 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -207,19 +207,13 @@ struct DeviceCM { , fClip(conservativeRasterClip) , fStashedMatrix(stashed) { - if (nullptr != device) { - device->ref(); - device->onAttachToCanvas(canvas); - } + SkSafeRef(device); fDevice = device; fPaint = paint ? new SkPaint(*paint) : nullptr; } ~DeviceCM() { - if (fDevice) { - fDevice->onDetachFromCanvas(); - fDevice->unref(); - } + SkSafeUnref(fDevice); delete fPaint; } @@ -684,7 +678,6 @@ SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) { if (device) { // The root device and the canvas should always have the same pixel geometry SkASSERT(fProps.pixelGeometry() == device->surfaceProps().pixelGeometry()); - device->onAttachToCanvas(this); fMCRec->fLayer->fDevice = SkRef(device); fMCRec->fRasterClip.setRect(device->getGlobalBounds()); } diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp index 75d481e98f..14250ab775 100644 --- a/src/core/SkDevice.cpp +++ b/src/core/SkDevice.cpp @@ -23,12 +23,7 @@ #include "SkTextBlobRunIterator.h" #include "SkTextToPathIter.h" -SkBaseDevice::SkBaseDevice(const SkSurfaceProps& surfaceProps) - : fSurfaceProps(surfaceProps) -#ifdef SK_DEBUG - , fAttachedToCanvas(false) -#endif -{ +SkBaseDevice::SkBaseDevice(const SkSurfaceProps& surfaceProps) : fSurfaceProps(surfaceProps) { fOrigin.setZero(); fMetaData = nullptr; } diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 88f584711c..602396fc21 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -287,30 +287,12 @@ bool SkGpuDevice::onAccessPixels(SkPixmap* pmap) { return false; } -void SkGpuDevice::onAttachToCanvas(SkCanvas* canvas) { - ASSERT_SINGLE_OWNER - INHERITED::onAttachToCanvas(canvas); - - // Canvas promises that this ptr is valid until onDetachFromCanvas is called - fClipStack.reset(SkRef(canvas->getClipStack())); -} - -void SkGpuDevice::onDetachFromCanvas() { - ASSERT_SINGLE_OWNER - INHERITED::onDetachFromCanvas(); - fClip.reset(); - fClipStack.reset(nullptr); -} - // call this every draw call, to ensure that the context reflects our state, // and not the state from some other canvas/device void SkGpuDevice::prepareDraw(const SkDraw& draw) { ASSERT_SINGLE_OWNER - SkASSERT(fClipStack.get()); - - SkASSERT(draw.fClipStack && draw.fClipStack == fClipStack); - fClip.reset(fClipStack, &this->getOrigin()); + fClip.reset(draw.fClipStack, &this->getOrigin()); } GrDrawContext* SkGpuDevice::accessDrawContext() { diff --git a/src/gpu/SkGpuDevice.h b/src/gpu/SkGpuDevice.h index 7e646a13f1..4cfd02421a 100644 --- a/src/gpu/SkGpuDevice.h +++ b/src/gpu/SkGpuDevice.h @@ -146,9 +146,6 @@ public: void flush() override; - void onAttachToCanvas(SkCanvas* canvas) override; - void onDetachFromCanvas() override; - bool onAccessPixels(SkPixmap*) override; // for debugging purposes only @@ -165,7 +162,6 @@ private: sk_sp<GrRenderTarget> fRenderTarget; sk_sp<GrDrawContext> fDrawContext; - SkAutoTUnref<const SkClipStack> fClipStack; SkIPoint fClipOrigin; GrClipStackClip fClip; SkISize fSize; diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp index 8370eabd6a..4181defc5d 100644 --- a/src/pdf/SkPDFDevice.cpp +++ b/src/pdf/SkPDFDevice.cpp @@ -653,7 +653,6 @@ SkPDFDevice::SkPDFDevice(SkISize pageSize, SkScalar rasterDpi, SkPDFDocument* do , fPageSize(pageSize) , fContentSize(pageSize) , fExistingClipRegion(SkIRect::MakeSize(pageSize)) - , fClipStack(nullptr) , fRasterDpi(rasterDpi) , fDocument(doc) { SkASSERT(pageSize.width() > 0); @@ -1405,19 +1404,6 @@ SkImageInfo SkPDFDevice::imageInfo() const { return info; } -void SkPDFDevice::onAttachToCanvas(SkCanvas* canvas) { - INHERITED::onAttachToCanvas(canvas); - - // Canvas promises that this ptr is valid until onDetachFromCanvas is called - fClipStack = canvas->getClipStack(); -} - -void SkPDFDevice::onDetachFromCanvas() { - INHERITED::onDetachFromCanvas(); - - fClipStack = nullptr; -} - sk_sp<SkSurface> SkPDFDevice::makeSurface(const SkImageInfo& info, const SkSurfaceProps& props) { return SkSurface::MakeRaster(info, &props); } diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h index f8497c63ff..6a167d979a 100644 --- a/src/pdf/SkPDFDevice.h +++ b/src/pdf/SkPDFDevice.h @@ -119,8 +119,6 @@ public: void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, const SkPaint&) override; - void onAttachToCanvas(SkCanvas* canvas) override; - void onDetachFromCanvas() override; SkImageInfo imageInfo() const override; // PDF specific methods. @@ -256,8 +254,6 @@ private: }; SkSinglyLinkedList<ContentEntry> fContentEntries; - const SkClipStack* fClipStack; - SkScalar fRasterDpi; SkPDFDocument* fDocument; |