Chromium Code Reviews| 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; |