diff options
Diffstat (limited to 'src/image/SkImage.cpp')
-rw-r--r-- | src/image/SkImage.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index fe6369ed35..6217f4ecda 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -169,14 +169,25 @@ sk_sp<SkImage> SkImage::makeSubset(const SkIRect& subset) const { #if SK_SUPPORT_GPU GrTexture* SkImage::getTexture() const { - return as_IB(this)->onGetTexture(); + return as_IB(this)->peekTexture(); } -bool SkImage::isTextureBacked() const { return SkToBool(as_IB(this)->peekProxy()); } +bool SkImage::isTextureBacked() const { return SkToBool(as_IB(this)->peekTexture()); } GrBackendObject SkImage::getTextureHandle(bool flushPendingGrContextIO, GrSurfaceOrigin* origin) const { - return as_IB(this)->onGetTextureHandle(flushPendingGrContextIO, origin); + GrTexture* texture = as_IB(this)->peekTexture(); + if (texture) { + GrContext* context = texture->getContext(); + if (context && flushPendingGrContextIO) { + context->prepareSurfaceForExternalIO(texture); + } + if (origin) { + *origin = texture->origin(); + } + return texture->getTextureHandle(); + } + return 0; } #else |