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..e4810db249819952093a4a85c3604d4a8bf0b1b0 100644 |
--- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
+++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp |
@@ -44,7 +44,7 @@ |
#include "core/workers/WorkerGlobalScope.h" |
#include "platform/SharedBuffer.h" |
#include "platform/ThreadSafeFunctional.h" |
-#include "platform/image-decoders/ImageDecoder.h" |
+#include "platform/graphics/DeferredImageDecoder.h" |
#include "platform/threading/BackgroundTaskRunner.h" |
#include "public/platform/Platform.h" |
#include "public/platform/WebThread.h" |
@@ -222,19 +222,19 @@ void ImageBitmapFactories::ImageBitmapLoader::decodeImageOnDecoderThread(WebTask |
ImageDecoder::AlphaOption alphaOp = ImageDecoder::AlphaPremultiplied; |
if (m_options.premultiplyAlpha() == "none") |
alphaOp = ImageDecoder::AlphaNotPremultiplied; |
- OwnPtr<ImageDecoder> decoder(ImageDecoder::create(*sharedBuffer, alphaOp, ImageDecoder::GammaAndColorProfileApplied)); |
+ OwnPtr<DeferredImageDecoder> decoder(DeferredImageDecoder::create(*sharedBuffer, alphaOp, ImageDecoder::GammaAndColorProfileApplied)); |
if (decoder) |
- decoder->setData(sharedBuffer.get(), true); |
+ decoder->setData(*sharedBuffer, true); |
taskRunner->postTask(BLINK_FROM_HERE, threadSafeBind(&ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread, AllowCrossThreadAccess(this), decoder.release())); |
} |
-void ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread(PassOwnPtr<ImageDecoder> decoder) |
+void ImageBitmapFactories::ImageBitmapLoader::resolvePromiseOnOriginalThread(PassOwnPtr<DeferredImageDecoder> decoder) |
{ |
if (!decoder) { |
rejectPromise(); |
return; |
} |
- RefPtr<SkImage> frame = ImageBitmap::getSkImageFromDecoder(decoder); |
+ RefPtr<SkImage> frame = decoder->createFrameAtIndex(0); |
Justin Novosad
2016/03/09 16:41:03
Have you verified this in tracing? The DeferredIma
xidachen
2016/03/09 17:49:26
I agree that getting the SkImage on the worker thr
|
ASSERT(!frame || (frame->width() && frame->height())); |
if (!frame) { |
rejectPromise(); |