Chromium Code Reviews| Index: src/image/SkSurface_Gpu.cpp |
| diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp |
| index 71bed3a9b9083a70bbc1afc9603f61df66ee0ea5..8bf30ad91ee114d215608b64ac4859955f4fc816 100644 |
| --- a/src/image/SkSurface_Gpu.cpp |
| +++ b/src/image/SkSurface_Gpu.cpp |
| @@ -26,22 +26,34 @@ SkSurface_Gpu::~SkSurface_Gpu() { |
| fDevice->unref(); |
| } |
| -GrBackendObject SkSurface_Gpu::onGetTextureHandle(TextureHandleAccess access) { |
| - GrRenderTarget* rt = fDevice->accessRenderTarget(); |
| +static GrRenderTarget* prepare_rt_for_external_access(SkSurface_Gpu* surface, |
| + SkSurface::BackendHandleAccess access) { |
| + GrRenderTarget* rt = surface->getDevice()->accessRenderTarget(); |
| switch (access) { |
| - case kFlushRead_TextureHandleAccess: |
| + case SkSurface::kFlushRead_BackendHandleAccess: |
| rt->prepareForExternalRead(); // todo: rename to prepareForExternalAccess() |
| break; |
| - case kFlushWrite_TextureHandleAccess: |
| - case kDiscardWrite_TextureHandleAccess: |
| + case SkSurface::kFlushWrite_BackendHandleAccess: |
| + case SkSurface::kDiscardWrite_BackendHandleAccess: |
| // for now we don't special-case on Discard, but we may in the future. |
| - this->notifyContentWillChange(kRetain_ContentChangeMode); |
| + surface->notifyContentWillChange(SkSurface::kRetain_ContentChangeMode); |
| rt->flushWrites(); |
| break; |
| } |
| + return rt; |
| +} |
| + |
| +GrBackendObject SkSurface_Gpu::onGetTextureHandle(BackendHandleAccess access) { |
| + GrRenderTarget* rt = prepare_rt_for_external_access(this, access); |
| return rt->asTexture()->getTextureHandle(); |
|
bsalomon
2015/06/30 15:49:58
Eek... this is an existing bug I should have caugh
|
| } |
| +bool SkSurface_Gpu::onGetRenderTargetHandle(GrBackendObject* obj, BackendHandleAccess access) { |
| + GrRenderTarget* rt = prepare_rt_for_external_access(this, access); |
| + *obj = rt->getRenderTargetHandle(); |
| + return true; |
| +} |
| + |
| SkCanvas* SkSurface_Gpu::onNewCanvas() { |
| SkCanvas::InitFlags flags = SkCanvas::kDefault_InitFlags; |
| // When we think this works... |