| Index: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| index 97eecc92859115a13cc2a3ef424df556a88e9866..cc39c9c3631c4c56e2d13728fefbd2c27d4e82fc 100644
|
| --- a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| +++ b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
|
| @@ -64,9 +64,9 @@ void CanvasAsyncBlobCreator::scheduleAsyncBlobCreation(bool canUseIdlePeriodSche
|
| // TODO(xlai): Progressive encoding on jpeg and webp image formats (crbug.com/571398, crbug.com/571399)
|
| if (canUseIdlePeriodScheduling) {
|
| ASSERT(m_mimeType == "image/png");
|
| - Platform::current()->mainThread()->scheduler()->postIdleTask(BLINK_FROM_HERE, bind<double>(&CanvasAsyncBlobCreator::initiatePngEncoding, this));
|
| + Platform::current()->mainThread()->scheduler()->postIdleTask(BLINK_FROM_HERE, bind<double>(&CanvasAsyncBlobCreator::initiatePngEncoding, retainedRef(this)));
|
| } else if (m_mimeType == "image/jpeg") {
|
| - Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&CanvasAsyncBlobCreator::initiateJpegEncoding, this, quality));
|
| + Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&CanvasAsyncBlobCreator::initiateJpegEncoding, retainedRef(this), quality));
|
| } else {
|
| BackgroundTaskRunner::TaskSize taskSize = (m_size.height() * m_size.width() >= LongTaskImageSizeThreshold) ? BackgroundTaskRunner::TaskSizeLongRunningTask : BackgroundTaskRunner::TaskSizeShortRunningTask;
|
| BackgroundTaskRunner::postOnBackgroundThread(BLINK_FROM_HERE, threadSafeBind(&CanvasAsyncBlobCreator::encodeImageOnEncoderThread, crossThreadRetainedRef(this), quality), taskSize);
|
| @@ -99,7 +99,7 @@ void CanvasAsyncBlobCreator::initiatePngEncoding(double deadlineSeconds)
|
| void CanvasAsyncBlobCreator::scheduleIdleEncodeRowsPng()
|
| {
|
| ASSERT(isMainThread());
|
| - Platform::current()->currentThread()->scheduler()->postIdleTask(BLINK_FROM_HERE, WTF::bind<double>(&CanvasAsyncBlobCreator::idleEncodeRowsPng, this));
|
| + Platform::current()->currentThread()->scheduler()->postIdleTask(BLINK_FROM_HERE, WTF::bind<double>(&CanvasAsyncBlobCreator::idleEncodeRowsPng, retainedRef(this)));
|
| }
|
|
|
| void CanvasAsyncBlobCreator::idleEncodeRowsPng(double deadlineSeconds)
|
| @@ -119,7 +119,7 @@ void CanvasAsyncBlobCreator::idleEncodeRowsPng(double deadlineSeconds)
|
| PNGImageEncoder::finalizePng(m_pngEncoderState.get());
|
|
|
| if (isDeadlineNearOrPassed(deadlineSeconds))
|
| - Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&CanvasAsyncBlobCreator::createBlobAndCall, this));
|
| + Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&CanvasAsyncBlobCreator::createBlobAndCall, retainedRef(this)));
|
| else
|
| this->createBlobAndCall();
|
| }
|
| @@ -128,7 +128,7 @@ void CanvasAsyncBlobCreator::createBlobAndCall()
|
| {
|
| ASSERT(isMainThread());
|
| Blob* resultBlob = Blob::create(m_encodedImage->data(), m_encodedImage->size(), m_mimeType);
|
| - Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&BlobCallback::handleEvent, m_callback, resultBlob));
|
| + Platform::current()->mainThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, bind(&BlobCallback::handleEvent, retainedRef(m_callback.get()), retainedRef(resultBlob)));
|
| }
|
|
|
| void CanvasAsyncBlobCreator::encodeImageOnEncoderThread(double quality)
|
|
|