Index: src/core/SkBitmap.cpp |
diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp |
index fb7f691c934d926d0b1e03e28eb9f5bf219f5862..a803c782274a2690af2bcdfa9f8393e4a1c7c440 100644 |
--- a/src/core/SkBitmap.cpp |
+++ b/src/core/SkBitmap.cpp |
@@ -424,10 +424,6 @@ void SkBitmap::notifyPixelsChanged() const { |
} |
} |
-GrTexture* SkBitmap::getTexture() const { |
- return fPixelRef ? fPixelRef->getTexture() : nullptr; |
-} |
- |
/////////////////////////////////////////////////////////////////////////////// |
/** We explicitly use the same allocator for our pixels that SkMask does, |
@@ -740,20 +736,6 @@ bool SkBitmap::extractSubset(SkBitmap* result, const SkIRect& subset) const { |
return false; // r is empty (i.e. no intersection) |
} |
- if (fPixelRef->getTexture() != nullptr) { |
- // Do a deep copy |
- SkPixelRef* pixelRef = fPixelRef->deepCopy(this->colorType(), this->colorSpace(), &subset); |
- if (pixelRef != nullptr) { |
- SkBitmap dst; |
- dst.setInfo(this->info().makeWH(subset.width(), subset.height())); |
- dst.setIsVolatile(this->isVolatile()); |
- dst.setPixelRef(pixelRef)->unref(); |
- SkDEBUGCODE(dst.validate()); |
- result->swap(dst); |
- return true; |
- } |
- } |
- |
// If the upper left of the rectangle was outside the bounds of this SkBitmap, we should have |
// exited above. |
SkASSERT(static_cast<unsigned>(r.fLeft) < static_cast<unsigned>(this->width())); |
@@ -909,46 +891,14 @@ bool SkBitmap::copyTo(SkBitmap* dst, SkColorType dstColorType, Allocator* alloc) |
return true; |
} |
+// TODO: can we merge this with copyTo? |
bool SkBitmap::deepCopyTo(SkBitmap* dst) const { |
const SkColorType dstCT = this->colorType(); |
- SkColorSpace* dstCS = this->colorSpace(); |
if (!this->canCopyTo(dstCT)) { |
return false; |
} |
- |
- // If we have a PixelRef, and it supports deep copy, use it. |
- // Currently supported only by texture-backed bitmaps. |
- if (fPixelRef) { |
- SkPixelRef* pixelRef = fPixelRef->deepCopy(dstCT, dstCS, nullptr); |
- if (pixelRef) { |
- uint32_t rowBytes; |
- if (this->colorType() == dstCT && this->colorSpace() == dstCS) { |
- // Since there is no subset to pass to deepCopy, and deepCopy |
- // succeeded, the new pixel ref must be identical. |
- SkASSERT(fPixelRef->info() == pixelRef->info()); |
- pixelRef->cloneGenID(*fPixelRef); |
- // Use the same rowBytes as the original. |
- rowBytes = fRowBytes; |
- } else { |
- // With the new config, an appropriate fRowBytes will be computed by setInfo. |
- rowBytes = 0; |
- } |
- |
- const SkImageInfo info = fInfo.makeColorType(dstCT); |
- if (!dst->setInfo(info, rowBytes)) { |
- return false; |
- } |
- dst->setPixelRef(pixelRef, fPixelRefOrigin)->unref(); |
- return true; |
- } |
- } |
- |
- if (this->getTexture()) { |
- return false; |
- } else { |
- return this->copyTo(dst, dstCT, nullptr); |
- } |
+ return this->copyTo(dst, dstCT, nullptr); |
} |
/////////////////////////////////////////////////////////////////////////////// |