Chromium Code Reviews| Index: Source/core/html/canvas/WebGLVertexArrayObjectOES.cpp |
| diff --git a/Source/core/html/canvas/WebGLVertexArrayObjectOES.cpp b/Source/core/html/canvas/WebGLVertexArrayObjectOES.cpp |
| index 6c12bccb7048db6bf46c1ecee414aec519394be5..d8660b29835d6569787d3c36fa14dcb9fc59cbbf 100644 |
| --- a/Source/core/html/canvas/WebGLVertexArrayObjectOES.cpp |
| +++ b/Source/core/html/canvas/WebGLVertexArrayObjectOES.cpp |
| @@ -31,9 +31,9 @@ |
| namespace WebCore { |
| -PassRefPtr<WebGLVertexArrayObjectOES> WebGLVertexArrayObjectOES::create(WebGLRenderingContextBase* ctx, VaoType type) |
| +PassRefPtrWillBeRawPtr<WebGLVertexArrayObjectOES> WebGLVertexArrayObjectOES::create(WebGLRenderingContextBase* ctx, VaoType type) |
| { |
| - return adoptRef(new WebGLVertexArrayObjectOES(ctx, type)); |
| + return adoptRefWillBeNoop(new WebGLVertexArrayObjectOES(ctx, type)); |
| } |
| WebGLVertexArrayObjectOES::WebGLVertexArrayObjectOES(WebGLRenderingContextBase* ctx, VaoType type) |
| @@ -56,7 +56,11 @@ WebGLVertexArrayObjectOES::WebGLVertexArrayObjectOES(WebGLRenderingContextBase* |
| WebGLVertexArrayObjectOES::~WebGLVertexArrayObjectOES() |
| { |
| - deleteObject(0); |
| +#if ENABLE(OILPAN) |
| + m_boundElementArrayBuffer = nullptr; |
| + m_vertexAttribState.clear(); |
| +#endif |
| + detachAndDeleteObject(); |
|
Ken Russell (switch to Gerrit)
2014/07/19 00:27:16
Please add a comment about the need to manually ca
sof
2014/07/19 19:55:57
Added
|
| } |
| void WebGLVertexArrayObjectOES::deleteObjectImpl(blink::WebGraphicsContext3D* context3d, Platform3DObject object) |
| @@ -65,7 +69,7 @@ void WebGLVertexArrayObjectOES::deleteObjectImpl(blink::WebGraphicsContext3D* co |
| case VaoTypeDefault: |
| break; |
| default: |
| - context()->webContext()->deleteVertexArrayOES(object); |
| + context3d->deleteVertexArrayOES(object); |
| break; |
| } |
| @@ -79,18 +83,17 @@ void WebGLVertexArrayObjectOES::deleteObjectImpl(blink::WebGraphicsContext3D* co |
| } |
| } |
| -void WebGLVertexArrayObjectOES::setElementArrayBuffer(PassRefPtr<WebGLBuffer> buffer) |
| +void WebGLVertexArrayObjectOES::setElementArrayBuffer(PassRefPtrWillBeRawPtr<WebGLBuffer> buffer) |
| { |
| if (buffer) |
| buffer->onAttached(); |
| if (m_boundElementArrayBuffer) |
| m_boundElementArrayBuffer->onDetached(context()->webContext()); |
| m_boundElementArrayBuffer = buffer; |
| - |
| } |
| void WebGLVertexArrayObjectOES::setVertexAttribState( |
| - GLuint index, GLsizei bytesPerElement, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset, PassRefPtr<WebGLBuffer> buffer) |
| + GLuint index, GLsizei bytesPerElement, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset, PassRefPtrWillBeRawPtr<WebGLBuffer> buffer) |
| { |
| GLsizei validatedStride = stride ? stride : bytesPerElement; |
| @@ -111,7 +114,7 @@ void WebGLVertexArrayObjectOES::setVertexAttribState( |
| state.offset = offset; |
| } |
| -void WebGLVertexArrayObjectOES::unbindBuffer(PassRefPtr<WebGLBuffer> buffer) |
| +void WebGLVertexArrayObjectOES::unbindBuffer(PassRefPtrWillBeRawPtr<WebGLBuffer> buffer) |
| { |
| if (m_boundElementArrayBuffer == buffer) { |
| m_boundElementArrayBuffer->onDetached(context()->webContext()); |
| @@ -133,4 +136,16 @@ void WebGLVertexArrayObjectOES::setVertexAttribDivisor(GLuint index, GLuint divi |
| state.divisor = divisor; |
| } |
| +void WebGLVertexArrayObjectOES::VertexAttribState::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(bufferBinding); |
| +} |
| + |
| +void WebGLVertexArrayObjectOES::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_boundElementArrayBuffer); |
| + visitor->trace(m_vertexAttribState); |
| + WebGLContextObject::trace(visitor); |
| +} |
| + |
| } |