Index: third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
index 22d2cd2190dfaf3ecd236a1e664806a31269b37e..f457c91774bebd1c090cd3adb7ecf7ddf18c3d85 100644 |
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
@@ -223,18 +223,20 @@ void ImageBitmapFactories::ImageBitmapLoader::decodeImageOnDecoderThread(WebTask |
if (m_options.premultiplyAlpha() == "none") |
alphaOp = ImageDecoder::AlphaNotPremultiplied; |
OwnPtr<ImageDecoder> decoder(ImageDecoder::create(*sharedBuffer, alphaOp, ImageDecoder::GammaAndColorProfileApplied)); |
- if (decoder) |
+ RefPtr<SkImage> frame; |
+ if (decoder) { |
decoder->setData(sharedBuffer.get(), true); |
- taskRunner->postTask(BLINK_FROM_HERE, threadSafeBind(&ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread, AllowCrossThreadAccess(this), decoder.release())); |
+ frame = ImageBitmap::getSkImageFromDecoder(decoder.release()); |
+ } |
+ taskRunner->postTask(BLINK_FROM_HERE, threadSafeBind(&ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread, AllowCrossThreadAccess(this), frame.release())); |
} |
-void ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread(PassOwnPtr<ImageDecoder> decoder) |
+void ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread(PassRefPtr<SkImage> frame) |
{ |
- if (!decoder) { |
+ if (!frame) { |
rejectPromise(); |
return; |
} |
- RefPtr<SkImage> frame = ImageBitmap::getSkImageFromDecoder(decoder); |
ASSERT(!frame || (frame->width() && frame->height())); |
if (!frame) { |
rejectPromise(); |