| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
|
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
|
| index bcbc3778456597d298a4ae1fee1da41c0e2f24ae..450a0963c4d85abb66a548352ebad9bb043d08a8 100644
|
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
|
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
|
| @@ -170,12 +170,12 @@ public:
|
| int drawingBufferHeight() const;
|
|
|
| void activeTexture(GLenum texture);
|
| - void attachShader(WebGLProgram*, WebGLShader*);
|
| + void attachShader(ScriptState*, WebGLProgram*, WebGLShader*);
|
| void bindAttribLocation(WebGLProgram*, GLuint index, const String& name);
|
| - void bindBuffer(GLenum target, WebGLBuffer*);
|
| - virtual void bindFramebuffer(GLenum target, WebGLFramebuffer*);
|
| - void bindRenderbuffer(GLenum target, WebGLRenderbuffer*);
|
| - void bindTexture(GLenum target, WebGLTexture*);
|
| + void bindBuffer(ScriptState*, GLenum target, WebGLBuffer*);
|
| + virtual void bindFramebuffer(ScriptState*, GLenum target, WebGLFramebuffer*);
|
| + void bindRenderbuffer(ScriptState*, GLenum target, WebGLRenderbuffer*);
|
| + void bindTexture(ScriptState*, GLenum target, WebGLTexture*);
|
| void blendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
| void blendEquation(GLenum mode);
|
| void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
| @@ -221,7 +221,7 @@ public:
|
| void depthFunc(GLenum);
|
| void depthMask(GLboolean);
|
| void depthRange(GLfloat zNear, GLfloat zFar);
|
| - void detachShader(WebGLProgram*, WebGLShader*);
|
| + void detachShader(ScriptState*, WebGLProgram*, WebGLShader*);
|
| void disable(GLenum cap);
|
| void disableVertexAttribArray(GLuint index);
|
| void drawArrays(GLenum mode, GLint first, GLsizei count);
|
| @@ -234,8 +234,8 @@ public:
|
| void enableVertexAttribArray(GLuint index);
|
| void finish();
|
| void flush();
|
| - void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer*);
|
| - void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture*, GLint level);
|
| + void framebufferRenderbuffer(ScriptState*, GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer*);
|
| + void framebufferTexture2D(ScriptState*, GLenum target, GLenum attachment, GLenum textarget, WebGLTexture*, GLint level);
|
| void frontFace(GLenum mode);
|
| void generateMipmap(GLenum target);
|
|
|
| @@ -348,7 +348,7 @@ public:
|
| void uniformMatrix4fv(const WebGLUniformLocation*, GLboolean transpose, DOMFloat32Array* value);
|
| void uniformMatrix4fv(const WebGLUniformLocation*, GLboolean transpose, Vector<GLfloat>& value);
|
|
|
| - void useProgram(WebGLProgram*);
|
| + void useProgram(ScriptState*, WebGLProgram*);
|
| void validateProgram(WebGLProgram*);
|
|
|
| void vertexAttrib1f(GLuint index, GLfloat x);
|
| @@ -363,7 +363,7 @@ public:
|
| void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
| void vertexAttrib4fv(GLuint index, const DOMFloat32Array* values);
|
| void vertexAttrib4fv(GLuint index, const Vector<GLfloat>& values);
|
| - void vertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized,
|
| + void vertexAttribPointer(ScriptState*, GLuint index, GLint size, GLenum type, GLboolean normalized,
|
| GLsizei stride, long long offset);
|
|
|
| void vertexAttribDivisorANGLE(GLuint index, GLuint divisor);
|
| @@ -531,13 +531,8 @@ protected:
|
|
|
| PersistentWillBeMember<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject;
|
| PersistentWillBeMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject;
|
| - void setBoundVertexArrayObject(WebGLVertexArrayObjectBase* arrayObject)
|
| - {
|
| - if (arrayObject)
|
| - m_boundVertexArrayObject = arrayObject;
|
| - else
|
| - m_boundVertexArrayObject = m_defaultVertexArrayObject;
|
| - }
|
| + bool m_preservedDefaultVAOObjectWrapper;
|
| + void setBoundVertexArrayObject(ScriptState*, WebGLVertexArrayObjectBase*);
|
|
|
| enum VertexAttribValueType {
|
| Float32ArrayType,
|
| @@ -1104,6 +1099,16 @@ protected:
|
|
|
| virtual void renderbufferStorageImpl(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, const char* functionName);
|
|
|
| + // Ensures that the JavaScript wrappers for objects that are
|
| + // latched into the context's state, or which are implicitly
|
| + // linked together (like programs and their attached shaders), are
|
| + // not garbage collected before they should be.
|
| + static void preserveObjectWrapper(ScriptState*, ScriptWrappable* sourceObject, const char* baseName, unsigned long index, ScriptWrappable* targetObject);
|
| + // Called to lazily instantiate the wrapper for the default VAO
|
| + // during calls to bindBuffer and vertexAttribPointer (from
|
| + // JavaScript).
|
| + void maybePreserveDefaultVAOObjectWrapper(ScriptState*);
|
| +
|
| friend class WebGLStateRestorer;
|
| friend class WebGLRenderingContextEvictionManager;
|
|
|
|
|