Index: Source/modules/webgl/WebGLRenderingContextBase.h |
diff --git a/Source/modules/webgl/WebGLRenderingContextBase.h b/Source/modules/webgl/WebGLRenderingContextBase.h |
index dba7f0df54521ff3ceec0497af4948afab470263..562bdca9c984ed0e1649eae46846724c8068580c 100644 |
--- a/Source/modules/webgl/WebGLRenderingContextBase.h |
+++ b/Source/modules/webgl/WebGLRenderingContextBase.h |
@@ -173,12 +173,12 @@ |
void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); |
void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); |
- WebGLBuffer* createBuffer(); |
- WebGLFramebuffer* createFramebuffer(); |
- WebGLProgram* createProgram(); |
- WebGLRenderbuffer* createRenderbuffer(); |
- WebGLShader* createShader(GLenum type); |
- WebGLTexture* createTexture(); |
+ PassRefPtrWillBeRawPtr<WebGLBuffer> createBuffer(); |
+ PassRefPtrWillBeRawPtr<WebGLFramebuffer> createFramebuffer(); |
+ PassRefPtrWillBeRawPtr<WebGLProgram> createProgram(); |
+ PassRefPtrWillBeRawPtr<WebGLRenderbuffer> createRenderbuffer(); |
+ PassRefPtrWillBeRawPtr<WebGLShader> createShader(GLenum type); |
+ PassRefPtrWillBeRawPtr<WebGLTexture> createTexture(); |
void cullFace(GLenum mode); |
@@ -210,10 +210,10 @@ |
void frontFace(GLenum mode); |
void generateMipmap(GLenum target); |
- WebGLActiveInfo* getActiveAttrib(WebGLProgram*, GLuint index); |
- WebGLActiveInfo* getActiveUniform(WebGLProgram*, GLuint index); |
- bool getAttachedShaders(WebGLProgram*, HeapVector<Member<WebGLShader>>&); |
- Nullable<HeapVector<Member<WebGLShader>>> getAttachedShaders(WebGLProgram*); |
+ PassRefPtrWillBeRawPtr<WebGLActiveInfo> getActiveAttrib(WebGLProgram*, GLuint index); |
+ PassRefPtrWillBeRawPtr<WebGLActiveInfo> getActiveUniform(WebGLProgram*, GLuint index); |
+ bool getAttachedShaders(WebGLProgram*, WillBeHeapVector<RefPtrWillBeMember<WebGLShader>>&); |
+ Nullable<WillBeHeapVector<RefPtrWillBeMember<WebGLShader>>> getAttachedShaders(WebGLProgram*); |
GLint getAttribLocation(WebGLProgram*, const String& name); |
ScriptValue getBufferParameter(ScriptState*, GLenum target, GLenum pname); |
void getContextAttributes(Nullable<WebGLContextAttributes>&); |
@@ -226,12 +226,12 @@ |
ScriptValue getRenderbufferParameter(ScriptState*, GLenum target, GLenum pname); |
ScriptValue getShaderParameter(ScriptState*, WebGLShader*, GLenum pname); |
String getShaderInfoLog(WebGLShader*); |
- WebGLShaderPrecisionFormat* getShaderPrecisionFormat(GLenum shaderType, GLenum precisionType); |
+ PassRefPtrWillBeRawPtr<WebGLShaderPrecisionFormat> getShaderPrecisionFormat(GLenum shaderType, GLenum precisionType); |
String getShaderSource(WebGLShader*); |
Nullable<Vector<String>> getSupportedExtensions(); |
virtual ScriptValue getTexParameter(ScriptState*, GLenum target, GLenum pname); |
ScriptValue getUniform(ScriptState*, WebGLProgram*, const WebGLUniformLocation*); |
- WebGLUniformLocation* getUniformLocation(WebGLProgram*, const String&); |
+ PassRefPtrWillBeRawPtr<WebGLUniformLocation> getUniformLocation(WebGLProgram*, const String&); |
ScriptValue getVertexAttrib(ScriptState*, GLuint index, GLenum pname); |
long long getVertexAttribOffset(GLuint index, GLenum pname); |
@@ -372,7 +372,7 @@ |
unsigned maxVertexAttribs() const { return m_maxVertexAttribs; } |
// GL_CHROMIUM_subscribe_uniform |
- CHROMIUMValuebuffer* createValuebufferCHROMIUM(); |
+ PassRefPtrWillBeRawPtr<CHROMIUMValuebuffer> createValuebufferCHROMIUM(); |
void deleteValuebufferCHROMIUM(CHROMIUMValuebuffer*); |
GLboolean isValuebufferCHROMIUM(CHROMIUMValuebuffer*); |
void bindValuebufferCHROMIUM(GLenum target, CHROMIUMValuebuffer*); |
@@ -392,10 +392,10 @@ |
class TextureUnitState { |
ALLOW_ONLY_INLINE_ALLOCATION(); |
public: |
- Member<WebGLTexture> m_texture2DBinding; |
- Member<WebGLTexture> m_textureCubeMapBinding; |
- Member<WebGLTexture> m_texture3DBinding; |
- Member<WebGLTexture> m_texture2DArrayBinding; |
+ RefPtrWillBeMember<WebGLTexture> m_texture2DBinding; |
+ RefPtrWillBeMember<WebGLTexture> m_textureCubeMapBinding; |
+ RefPtrWillBeMember<WebGLTexture> m_texture3DBinding; |
+ RefPtrWillBeMember<WebGLTexture> m_texture2DArrayBinding; |
DECLARE_TRACE(); |
}; |
@@ -481,17 +481,17 @@ |
Timer<WebGLRenderingContextBase> m_restoreTimer; |
bool m_markedCanvasDirty; |
- PersistentHeapHashSetWillBeHeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects; |
- |
- PersistentWillBeMember<WebGLRenderingContextLostCallback> m_contextLostCallbackAdapter; |
- PersistentWillBeMember<WebGLRenderingContextErrorMessageCallback> m_errorMessageCallbackAdapter; |
+ WillBeHeapHashSet<RawPtrWillBeWeakMember<WebGLContextObject>> m_contextObjects; |
+ |
+ OwnPtrWillBeMember<WebGLRenderingContextLostCallback> m_contextLostCallbackAdapter; |
+ OwnPtrWillBeMember<WebGLRenderingContextErrorMessageCallback> m_errorMessageCallbackAdapter; |
// List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and stored values for ELEMENT_ARRAY_BUFFER |
- PersistentWillBeMember<WebGLBuffer> m_boundArrayBuffer; |
- |
- PersistentWillBeMember<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject; |
- PersistentWillBeMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; |
- void setBoundVertexArrayObject(WebGLVertexArrayObjectBase* arrayObject) |
+ RefPtrWillBeMember<WebGLBuffer> m_boundArrayBuffer; |
+ |
+ RefPtrWillBeMember<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject; |
+ RefPtrWillBeMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; |
+ void setBoundVertexArrayObject(PassRefPtrWillBeRawPtr<WebGLVertexArrayObjectBase> arrayObject) |
{ |
if (arrayObject) |
m_boundVertexArrayObject = arrayObject; |
@@ -530,23 +530,23 @@ |
}; |
Vector<VertexAttribValue> m_vertexAttribValue; |
unsigned m_maxVertexAttribs; |
- PersistentWillBeMember<WebGLBuffer> m_vertexAttrib0Buffer; |
+ RefPtrWillBeMember<WebGLBuffer> m_vertexAttrib0Buffer; |
long m_vertexAttrib0BufferSize; |
GLfloat m_vertexAttrib0BufferValue[4]; |
bool m_forceAttrib0BufferRefill; |
bool m_vertexAttrib0UsedBefore; |
- PersistentWillBeMember<WebGLProgram> m_currentProgram; |
- PersistentWillBeMember<WebGLFramebuffer> m_framebufferBinding; |
- PersistentWillBeMember<WebGLRenderbuffer> m_renderbufferBinding; |
- PersistentWillBeMember<CHROMIUMValuebuffer> m_valuebufferBinding; |
+ RefPtrWillBeMember<WebGLProgram> m_currentProgram; |
+ RefPtrWillBeMember<WebGLFramebuffer> m_framebufferBinding; |
+ RefPtrWillBeMember<WebGLRenderbuffer> m_renderbufferBinding; |
+ RefPtrWillBeMember<CHROMIUMValuebuffer> m_valuebufferBinding; |
GC_PLUGIN_IGNORE("crbug.com/496496") |
- PersistentHeapVectorWillBeHeapVector<TextureUnitState> m_textureUnits; |
+ WillBeHeapVector<TextureUnitState> m_textureUnits; |
unsigned long m_activeTextureUnit; |
- PersistentWillBeMember<WebGLTexture> m_blackTexture2D; |
- PersistentWillBeMember<WebGLTexture> m_blackTextureCubeMap; |
+ RefPtrWillBeMember<WebGLTexture> m_blackTexture2D; |
+ RefPtrWillBeMember<WebGLTexture> m_blackTextureCubeMap; |
Vector<GLenum> m_compressedTextureFormats; |
@@ -615,7 +615,7 @@ |
DraftExtension = 0x01, |
}; |
- class ExtensionTracker : public GarbageCollected<ExtensionTracker> { |
+ class ExtensionTracker : public NoBaseWillBeGarbageCollected<ExtensionTracker> { |
public: |
ExtensionTracker(ExtensionFlags flags, const char* const* prefixes) |
: m_draft(flags & DraftExtension) |
@@ -623,6 +623,12 @@ |
{ |
} |
+#if !ENABLE(OILPAN) |
+ virtual ~ExtensionTracker() |
+ { |
+ } |
+#endif |
+ |
bool draft() const |
{ |
return m_draft; |
@@ -631,10 +637,10 @@ |
const char* const* prefixes() const; |
bool matchesNameWithPrefixes(const String&) const; |
- virtual WebGLExtension* getExtension(WebGLRenderingContextBase*) = 0; |
+ virtual PassRefPtrWillBeRawPtr<WebGLExtension> getExtension(WebGLRenderingContextBase*) = 0; |
virtual bool supported(WebGLRenderingContextBase*) const = 0; |
virtual const char* extensionName() const = 0; |
- virtual void loseExtension(bool) = 0; |
+ virtual void loseExtension() = 0; |
DEFINE_INLINE_VIRTUAL_TRACE() { } |
@@ -646,12 +652,22 @@ |
template <typename T> |
class TypedExtensionTracker final : public ExtensionTracker { |
public: |
- static TypedExtensionTracker<T>* create(PersistentWillBeMember<T>& extensionField, ExtensionFlags flags, const char* const* prefixes) |
- { |
- return new TypedExtensionTracker<T>(extensionField, flags, prefixes); |
- } |
- |
- WebGLExtension* getExtension(WebGLRenderingContextBase* context) override |
+ static PassOwnPtrWillBeRawPtr<TypedExtensionTracker<T>> create(RefPtrWillBeMember<T>& extensionField, ExtensionFlags flags, const char* const* prefixes) |
+ { |
+ return adoptPtrWillBeNoop(new TypedExtensionTracker<T>(extensionField, flags, prefixes)); |
+ } |
+ |
+#if !ENABLE(OILPAN) |
+ ~TypedExtensionTracker() override |
+ { |
+ if (m_extension) { |
+ m_extension->lose(true); |
+ m_extension = nullptr; |
+ } |
+ } |
+#endif |
+ |
+ PassRefPtrWillBeRawPtr<WebGLExtension> getExtension(WebGLRenderingContextBase* context) override |
{ |
if (!m_extension) { |
m_extension = T::create(context); |
@@ -671,10 +687,10 @@ |
return T::extensionName(); |
} |
- void loseExtension(bool force) override |
+ void loseExtension() override |
{ |
if (m_extension) { |
- m_extension->lose(force); |
+ m_extension->lose(false); |
if (m_extension->isLost()) |
m_extension = nullptr; |
} |
@@ -687,23 +703,23 @@ |
} |
private: |
- TypedExtensionTracker(PersistentWillBeMember<T>& extensionField, ExtensionFlags flags, const char* const* prefixes) |
+ TypedExtensionTracker(RefPtrWillBeMember<T>& extensionField, ExtensionFlags flags, const char* const* prefixes) |
: ExtensionTracker(flags, prefixes) |
, m_extensionField(extensionField) |
{ |
} |
- PersistentWillBeMember<T>& m_extensionField; |
+ RefPtrWillBeMember<T>& m_extensionField; |
// ExtensionTracker holds it's own reference to the extension to ensure |
// that it is not deleted before this object's destructor is called |
- Member<T> m_extension; |
+ RefPtrWillBeMember<T> m_extension; |
}; |
bool m_extensionEnabled[WebGLExtensionNameCount]; |
- PersistentHeapVectorWillBeHeapVector<Member<ExtensionTracker>> m_extensions; |
+ WillBeHeapVector<OwnPtrWillBeMember<ExtensionTracker>> m_extensions; |
template <typename T> |
- void registerExtension(PersistentWillBeMember<T>& extensionPtr, ExtensionFlags flags = ApprovedExtension, const char* const* prefixes = nullptr) |
+ void registerExtension(RefPtrWillBeMember<T>& extensionPtr, ExtensionFlags flags = ApprovedExtension, const char* const* prefixes = 0) |
{ |
m_extensions.append(TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes)); |
} |