diff options
-rw-r--r-- | src/core/SkAutoPixmapStorage.cpp | 6 | ||||
-rw-r--r-- | src/core/SkAutoPixmapStorage.h | 2 | ||||
-rw-r--r-- | src/gpu/GrSWMaskHelper.cpp | 22 |
3 files changed, 15 insertions, 15 deletions
diff --git a/src/core/SkAutoPixmapStorage.cpp b/src/core/SkAutoPixmapStorage.cpp index 72194233a8..600f68a653 100644 --- a/src/core/SkAutoPixmapStorage.cpp +++ b/src/core/SkAutoPixmapStorage.cpp @@ -53,14 +53,14 @@ void SkAutoPixmapStorage::alloc(const SkImageInfo& info) { SkASSERT_RELEASE(this->tryAlloc(info)); } -const SkData* SkAutoPixmapStorage::detachPixelsAsData() { +sk_sp<SkData> SkAutoPixmapStorage::detachPixelsAsData() { if (!fStorage) { return nullptr; } - auto data = SkData::MakeFromMalloc(fStorage, this->computeByteSize()); + sk_sp<SkData> data = SkData::MakeFromMalloc(fStorage, this->computeByteSize()); fStorage = nullptr; this->INHERITED::reset(); - return data.release(); + return data; } diff --git a/src/core/SkAutoPixmapStorage.h b/src/core/SkAutoPixmapStorage.h index aedbdc6d49..c0e01da7d3 100644 --- a/src/core/SkAutoPixmapStorage.h +++ b/src/core/SkAutoPixmapStorage.h @@ -49,7 +49,7 @@ public: * Returns an SkData object wrapping the allocated pixels memory, and resets the pixmap. * If the storage hasn't been allocated, the result is NULL. */ - const SkData* SK_WARN_UNUSED_RESULT detachPixelsAsData(); + sk_sp<SkData> SK_WARN_UNUSED_RESULT detachPixelsAsData(); // We wrap these so we can clear our internal storage diff --git a/src/gpu/GrSWMaskHelper.cpp b/src/gpu/GrSWMaskHelper.cpp index bae0f43599..0fbf9dcfe4 100644 --- a/src/gpu/GrSWMaskHelper.cpp +++ b/src/gpu/GrSWMaskHelper.cpp @@ -9,6 +9,7 @@ #include "GrContext.h" #include "GrContextPriv.h" +#include "GrProxyProvider.h" #include "GrShape.h" #include "GrSurfaceContext.h" #include "GrTextureProxy.h" @@ -92,21 +93,20 @@ bool GrSWMaskHelper::init(const SkIRect& resultBounds) { } sk_sp<GrTextureProxy> GrSWMaskHelper::toTextureProxy(GrContext* context, SkBackingFit fit) { - GrSurfaceDesc desc; - desc.fWidth = fPixels->width(); - desc.fHeight = fPixels->height(); - desc.fConfig = kAlpha_8_GrPixelConfig; - - sk_sp<GrSurfaceContext> sContext = context->contextPriv().makeDeferredSurfaceContext( - desc, kTopLeft_GrSurfaceOrigin, GrMipMapped::kNo, fit, SkBudgeted::kYes); - if (!sContext || !sContext->asTextureProxy()) { + SkImageInfo ii = SkImageInfo::MakeA8(fPixels->width(), fPixels->height()); + size_t rowBytes = fPixels->rowBytes(); + + sk_sp<SkData> data = fPixels->detachPixelsAsData(); + if (!data) { return nullptr; } - SkImageInfo ii = SkImageInfo::MakeA8(desc.fWidth, desc.fHeight); - if (!sContext->writePixels(ii, fPixels->addr(), fPixels->rowBytes(), 0, 0)) { + sk_sp<SkImage> img = SkImage::MakeRasterData(ii, std::move(data), rowBytes); + if (!img) { return nullptr; } - return sContext->asTextureProxyRef(); + return context->contextPriv().proxyProvider()->createTextureProxy(std::move(img), + kNone_GrSurfaceFlags, 1, + SkBudgeted::kYes, fit); } |