| Index: Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| diff --git a/Source/core/html/canvas/WebGLRenderingContextBase.cpp b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| index 151e37c8648804dee30863e729eda0cf64fff09c..6b9cf49f9f5481824024e3b6a48114020acf8c95 100644
|
| --- a/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| +++ b/Source/core/html/canvas/WebGLRenderingContextBase.cpp
|
| @@ -91,10 +91,19 @@
|
|
|
| namespace blink {
|
|
|
| +namespace {
|
| +
|
| const double secondsBetweenRestoreAttempts = 1.0;
|
| const int maxGLErrorsAllowedToConsole = 256;
|
| const unsigned maxGLActiveContexts = 16;
|
|
|
| +DrawingBuffer::SourceBuffer convertSourceBuffer(CanvasRenderingContext::SourceBuffer sourceBuffer)
|
| +{
|
| + return static_cast<DrawingBuffer::SourceBuffer>(sourceBuffer);
|
| +}
|
| +
|
| +} // namesapce
|
| +
|
| // FIXME: Oilpan: static vectors to heap allocated WebGLRenderingContextBase objects
|
| // are kept here. This relies on the WebGLRenderingContextBase finalization to
|
| // explicitly retire themselves from these vectors, but it'd be preferable if
|
| @@ -915,7 +924,7 @@ void WebGLRenderingContextBase::paintRenderingResultsToCanvas(SourceBuffer sourc
|
| drawingBuffer()->bind();
|
| }
|
|
|
| -PassRefPtrWillBeRawPtr<ImageData> WebGLRenderingContextBase::paintRenderingResultsToImageData()
|
| +PassRefPtrWillBeRawPtr<ImageData> WebGLRenderingContextBase::paintRenderingResultsToImageData(SourceBuffer sourceBuffer)
|
| {
|
| if (isContextLost())
|
| return nullptr;
|
| @@ -923,7 +932,8 @@ PassRefPtrWillBeRawPtr<ImageData> WebGLRenderingContextBase::paintRenderingResul
|
| clearIfComposited();
|
| drawingBuffer()->commit();
|
| int width, height;
|
| - RefPtr<Uint8ClampedArray> imageDataPixels = drawingBuffer()->paintRenderingResultsToImageData(width, height);
|
| + RefPtr<Uint8ClampedArray> imageDataPixels =
|
| + drawingBuffer()->paintRenderingResultsToImageData(width, height, convertSourceBuffer(sourceBuffer));
|
| if (!imageDataPixels)
|
| return nullptr;
|
|
|
| @@ -3557,11 +3567,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in
|
| }
|
| }
|
|
|
| - RefPtrWillBeRawPtr<ImageData> imageData = canvas->getImageData();
|
| - if (imageData)
|
| - texImage2D(target, level, internalformat, format, type, imageData.get(), exceptionState);
|
| - else
|
| - texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState);
|
| + texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(HTMLCanvasElement::Back), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState);
|
| }
|
|
|
| PassRefPtr<Image> WebGLRenderingContextBase::videoFrameToImage(HTMLVideoElement* video, BackingStoreCopy backingStoreCopy)
|
| @@ -3795,11 +3801,7 @@ void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint
|
| || !validateTexFunc("texSubImage2D", TexSubImage2D, SourceHTMLCanvasElement, target, level, format, canvas->width(), canvas->height(), 0, format, type, xoffset, yoffset))
|
| return;
|
|
|
| - RefPtrWillBeRawPtr<ImageData> imageData = canvas->getImageData();
|
| - if (imageData)
|
| - texSubImage2D(target, level, xoffset, yoffset, format, type, imageData.get(), exceptionState);
|
| - else
|
| - texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState);
|
| + texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(HTMLCanvasElement::Back), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState);
|
| }
|
|
|
| void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
|
|