Chromium Code Reviews| Index: Source/core/html/canvas/WebGLRenderingContextBase.cpp |
| diff --git a/Source/core/html/canvas/WebGLRenderingContextBase.cpp b/Source/core/html/canvas/WebGLRenderingContextBase.cpp |
| index efeab45ec32ed47ca0f9f0bfc08d92ad83c60ee4..5ab4fa97e9e93eea641df89760284eb411c311cd 100644 |
| --- a/Source/core/html/canvas/WebGLRenderingContextBase.cpp |
| +++ b/Source/core/html/canvas/WebGLRenderingContextBase.cpp |
| @@ -3603,7 +3603,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| // If possible, copy from the canvas element directly to the texture |
| // via the GPU, without a read-back to system memory. |
| - if (GL_TEXTURE_2D == target && texture) { |
| + if (canvas->renderingContext() && GL_TEXTURE_2D == target && texture) { |
| ScopedTexture2DRestorer restorer(this); |
| if (!canvas->is3D()) { |
| @@ -3616,7 +3616,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| } else { |
| WebGLRenderingContextBase* gl = toWebGLRenderingContextBase(canvas->renderingContext()); |
| ScopedTexture2DRestorer restorer(gl); |
| - if (gl && gl->drawingBuffer()->copyToPlatformTexture(webContext(), texture->object(), internalformat, type, |
| + if (gl->drawingBuffer()->copyToPlatformTexture(webContext(), texture->object(), internalformat, type, |
| level, m_unpackPremultiplyAlpha, !m_unpackFlipY, BackBuffer)) { |
| texture->setLevelInfo(target, level, internalformat, canvas->width(), canvas->height(), type); |
| return; |
| @@ -3624,7 +3624,7 @@ void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in |
| } |
| } |
| - texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(BackBuffer), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState); |
| + texImage2DImpl(target, level, internalformat, format, type, canvas->copiedImage(BackBuffer).get(), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState); |
|
Ken Russell (switch to Gerrit)
2014/12/03 02:59:54
In general a returned PassRefPtr is supposed to be
|
| } |
| PassRefPtr<Image> WebGLRenderingContextBase::videoFrameToImage(HTMLVideoElement* video, BackingStoreCopy backingStoreCopy) |
| @@ -3858,7 +3858,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; |
| - texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(BackBuffer), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState); |
| + texSubImage2DImpl(target, level, xoffset, yoffset, format, type, canvas->copiedImage(BackBuffer).get(), WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremultiplyAlpha, exceptionState); |
| } |
| void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, |
| @@ -5366,7 +5366,7 @@ bool WebGLRenderingContextBase::validateHTMLImageElement(const char* functionNam |
| bool WebGLRenderingContextBase::validateHTMLCanvasElement(const char* functionName, HTMLCanvasElement* canvas, ExceptionState& exceptionState) |
| { |
| - if (!canvas || !canvas->buffer()) { |
| + if (!canvas || !canvas->isPaintable()) { |
| synthesizeGLError(GL_INVALID_VALUE, functionName, "no canvas"); |
| return false; |
| } |