Index: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
index fbbb0602ea1fd632d5fb171a23f92ddd22a58240..db98cd6a64d608ba2855f96678dc6d0a0082a24a 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp |
@@ -106,8 +106,8 @@ const GLenum kSupportedInternalFormatsStorage[] = { |
GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, |
}; |
-WebGL2RenderingContextBase::WebGL2RenderingContextBase(HTMLCanvasElement* passedCanvas, PassOwnPtr<WebGraphicsContext3D> context, const WebGLContextAttributes& requestedAttributes) |
- : WebGLRenderingContextBase(passedCanvas, context, requestedAttributes) |
+WebGL2RenderingContextBase::WebGL2RenderingContextBase(HTMLCanvasElement* passedCanvas, ScriptState* scriptState, PassOwnPtr<WebGraphicsContext3D> context, const WebGLContextAttributes& requestedAttributes) |
+ : WebGLRenderingContextBase(passedCanvas, scriptState, context, requestedAttributes) |
{ |
m_supportedInternalFormatsStorage.insert(kSupportedInternalFormatsStorage, kSupportedInternalFormatsStorage + arraysize(kSupportedInternalFormatsStorage)); |
} |
@@ -2065,13 +2065,13 @@ WebGLVertexArrayObject* WebGL2RenderingContextBase::createVertexArray() |
return o; |
} |
-void WebGL2RenderingContextBase::deleteVertexArray(WebGLVertexArrayObject* vertexArray) |
+void WebGL2RenderingContextBase::deleteVertexArray(ScriptState* scriptState, WebGLVertexArrayObject* vertexArray) |
{ |
if (isContextLost() || !vertexArray) |
return; |
if (!vertexArray->isDefaultObject() && vertexArray == m_boundVertexArrayObject) |
- setBoundVertexArrayObject(nullptr); |
+ setBoundVertexArrayObject(scriptState, nullptr); |
vertexArray->deleteObject(webContext()); |
} |
@@ -2087,7 +2087,7 @@ GLboolean WebGL2RenderingContextBase::isVertexArray(WebGLVertexArrayObject* vert |
return webContext()->isVertexArrayOES(vertexArray->object()); |
} |
-void WebGL2RenderingContextBase::bindVertexArray(WebGLVertexArrayObject* vertexArray) |
+void WebGL2RenderingContextBase::bindVertexArray(ScriptState* scriptState, WebGLVertexArrayObject* vertexArray) |
{ |
if (isContextLost()) |
return; |
@@ -2101,14 +2101,14 @@ void WebGL2RenderingContextBase::bindVertexArray(WebGLVertexArrayObject* vertexA |
webContext()->bindVertexArrayOES(objectOrZero(vertexArray)); |
vertexArray->setHasEverBeenBound(); |
- setBoundVertexArrayObject(vertexArray); |
+ setBoundVertexArrayObject(scriptState, vertexArray); |
} else { |
webContext()->bindVertexArrayOES(0); |
- setBoundVertexArrayObject(nullptr); |
+ setBoundVertexArrayObject(scriptState, nullptr); |
} |
} |
-void WebGL2RenderingContextBase::bindFramebuffer(GLenum target, WebGLFramebuffer* buffer) |
+void WebGL2RenderingContextBase::bindFramebuffer(ScriptState* scriptState, GLenum target, WebGLFramebuffer* buffer) |
{ |
bool deleted; |
if (!checkObjectToBeBound("bindFramebuffer", buffer, deleted)) |
@@ -2130,6 +2130,8 @@ void WebGL2RenderingContextBase::bindFramebuffer(GLenum target, WebGLFramebuffer |
} |
setFramebuffer(target, buffer); |
+ if (scriptState) |
+ preserveObjectWrapper(scriptState, this, "framebuffer", 0, buffer); |
} |
void WebGL2RenderingContextBase::deleteFramebuffer(WebGLFramebuffer* framebuffer) |
@@ -2947,8 +2949,8 @@ void WebGL2RenderingContextBase::removeBoundBuffer(WebGLBuffer* buffer) |
void WebGL2RenderingContextBase::restoreCurrentFramebuffer() |
{ |
- bindFramebuffer(GL_DRAW_FRAMEBUFFER, m_framebufferBinding.get()); |
- bindFramebuffer(GL_READ_FRAMEBUFFER, m_readFramebufferBinding.get()); |
+ bindFramebuffer(nullptr, GL_DRAW_FRAMEBUFFER, m_framebufferBinding.get()); |
+ bindFramebuffer(nullptr, GL_READ_FRAMEBUFFER, m_readFramebufferBinding.get()); |
haraken
2015/10/13 02:02:04
I'm wondering why we can't use m_scriptState.
|
} |
GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() |