| Index: src/image/SkSurface_Gpu.cpp
|
| diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp
|
| index 71bed3a9b9083a70bbc1afc9603f61df66ee0ea5..75f9471f3e1d0c2964d336e8f86650dc6dc31f7f 100644
|
| --- a/src/image/SkSurface_Gpu.cpp
|
| +++ b/src/image/SkSurface_Gpu.cpp
|
| @@ -26,20 +26,36 @@ 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->asTexture()->getTextureHandle();
|
| + return rt;
|
| +}
|
| +
|
| +GrBackendObject SkSurface_Gpu::onGetTextureHandle(BackendHandleAccess access) {
|
| + GrRenderTarget* rt = prepare_rt_for_external_access(this, access);
|
| + if (rt->asTexture()) {
|
| + return rt->asTexture()->getTextureHandle();
|
| + } else {
|
| + return NULL;
|
| + }
|
| +}
|
| +
|
| +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() {
|
|
|