Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 1387743002: Fixed expando-loss.html test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cache ScriptState and use it to wrap m_defaultVertexArrayObject. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()

Powered by Google App Engine
This is Rietveld 408576698