Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
index ebed1a63bf97b77e8b8df2cf6e7183f5125193fd..6b92594436ae742bbde7ed2d3dfe4c1091119ee7 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
@@ -642,7 +642,14 @@ ImageBitmap* WebGLRenderingContextBase::transferToImageBitmapBase() |
return nullptr; |
WebExternalTextureMailbox mailbox; |
drawingBuffer()->prepareMailbox(&mailbox, 0); |
- ImageBitmap* imageBitmap = ImageBitmap::create(mailbox); |
+ ImageBitmap* imageBitmap; |
+ // If the mailbox is invalid, return an transparent black ImageBitmap |
Ken Russell (switch to Gerrit)
2016/07/12 22:52:04
Could you add a comment saying that the only situa
|
+ if (mailbox.textureSize.width == 0 && mailbox.textureSize.height == 0) { |
+ sk_sp<SkSurface>surface = SkSurface::MakeRasterN32Premul(drawingBuffer()->size().width(), drawingBuffer()->size().height()); |
+ imageBitmap = ImageBitmap::create(StaticBitmapImage::create(fromSkSp(surface->makeImageSnapshot()))); |
+ } else { |
+ imageBitmap = ImageBitmap::create(mailbox); |
+ } |
// TODO(xidachen): Create a small pool of recycled textures from ImageBitmapRenderingContext's |
// transferFromImageBitmap, and try to use them in DrawingBuffer. |
return imageBitmap; |