Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index 898bc81c102abbcb1b73fd72e1ab06a2b3350a42..9b472cb09094eb2f92f2fe5b6a2744a61fe5b022 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -997,11 +997,18 @@ void ResourceProvider::ScopedWriteLockGr::InitSkSurface( |
surface_props = |
SkSurfaceProps(flags, SkSurfaceProps::kLegacyFontHost_InitType); |
} |
- sk_surface_ = skia::AdoptRef( |
- SkSurface::NewWrappedRenderTarget(gr_context, desc, &surface_props)); |
+ gr_surface_ = |
+ skia::AdoptRef(gr_context->textureProvider()->wrapBackendTexture( |
+ desc, kBorrow_GrWrapOwnership)); |
+ if (gr_surface_) |
+ sk_surface_ = skia::AdoptRef(SkSurface::NewRenderTargetDirect( |
+ gr_surface_->asRenderTarget(), &surface_props)); |
} |
void ResourceProvider::ScopedWriteLockGr::ReleaseSkSurface() { |
+ DCHECK(gr_surface_); |
+ gr_surface_->prepareForExternalIO(); |
+ gr_surface_.clear(); |
sk_surface_.clear(); |
} |