diff options
author | reed <reed@google.com> | 2015-06-18 13:41:40 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-18 13:41:40 -0700 |
commit | de49988bc24977f97bb1da8c17ceee5432fcc8e7 (patch) | |
tree | c714ed2bda1b676964d804b4e8e7cc393db3d627 /src/image/SkImage_Gpu.cpp | |
parent | d7395d82d53202e831d9f1c73f7a0196883f0c1f (diff) |
add callbacks to Images that wrap client-provided content
BUG=skia:
Review URL: https://codereview.chromium.org/1169553003
Diffstat (limited to 'src/image/SkImage_Gpu.cpp')
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index 281f762dff..973f4ba304 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -115,7 +115,9 @@ bool SkImage_Gpu::onReadPixels(const SkImageInfo& info, void* pixels, size_t row /////////////////////////////////////////////////////////////////////////////////////////////////// static SkImage* new_wrapped_texture_common(GrContext* ctx, const GrBackendTextureDesc& desc, - SkAlphaType at, GrWrapOwnership ownership) { + SkAlphaType at, GrWrapOwnership ownership, + SkImage::TextureReleaseProc releaseProc, + SkImage::ReleaseContext releaseCtx) { if (desc.fWidth <= 0 || desc.fHeight <= 0) { return NULL; } @@ -123,18 +125,23 @@ static SkImage* new_wrapped_texture_common(GrContext* ctx, const GrBackendTextur if (!tex) { return NULL; } + if (releaseProc) { + tex->setRelease(releaseProc, releaseCtx); + } + const SkSurface::Budgeted budgeted = SkSurface::kNo_Budgeted; return SkNEW_ARGS(SkImage_Gpu, (desc.fWidth, desc.fHeight, at, tex, 0, budgeted)); } -SkImage* SkImage::NewFromTexture(GrContext* ctx, const GrBackendTextureDesc& desc, SkAlphaType at) { - return new_wrapped_texture_common(ctx, desc, at, kBorrow_GrWrapOwnership); +SkImage* SkImage::NewFromTexture(GrContext* ctx, const GrBackendTextureDesc& desc, SkAlphaType at, + TextureReleaseProc releaseP, ReleaseContext releaseC) { + return new_wrapped_texture_common(ctx, desc, at, kBorrow_GrWrapOwnership, releaseP, releaseC); } SkImage* SkImage::NewFromAdoptedTexture(GrContext* ctx, const GrBackendTextureDesc& desc, SkAlphaType at) { - return new_wrapped_texture_common(ctx, desc, at, kAdopt_GrWrapOwnership); + return new_wrapped_texture_common(ctx, desc, at, kAdopt_GrWrapOwnership, NULL, NULL); } SkImage* SkImage::NewFromTextureCopy(GrContext* ctx, const GrBackendTextureDesc& srcDesc, |