Chromium Code Reviews| Index: Source/core/html/canvas/WebGLFramebuffer.cpp |
| diff --git a/Source/core/html/canvas/WebGLFramebuffer.cpp b/Source/core/html/canvas/WebGLFramebuffer.cpp |
| index e968a306e5d313c7c07dbe191b3f2466b1c4135b..9abe365a61dbd1d0d12db1d6661b03486f2ddc04 100644 |
| --- a/Source/core/html/canvas/WebGLFramebuffer.cpp |
| +++ b/Source/core/html/canvas/WebGLFramebuffer.cpp |
| @@ -41,10 +41,14 @@ namespace { |
| class WebGLRenderbufferAttachment FINAL : public WebGLFramebuffer::WebGLAttachment { |
| public: |
| - static PassRefPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLRenderbuffer*); |
| + static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLRenderbuffer*); |
| + |
| + virtual void trace(Visitor*) OVERRIDE; |
| private: |
| - WebGLRenderbufferAttachment(WebGLRenderbuffer*); |
| + explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); |
| + WebGLRenderbufferAttachment() { } |
| + |
| virtual GLsizei width() const OVERRIDE; |
| virtual GLsizei height() const OVERRIDE; |
| virtual GLenum format() const OVERRIDE; |
| @@ -56,14 +60,18 @@ namespace { |
| virtual void attach(blink::WebGraphicsContext3D*, GLenum attachment) OVERRIDE; |
| virtual void unattach(blink::WebGraphicsContext3D*, GLenum attachment) OVERRIDE; |
| - WebGLRenderbufferAttachment() { }; |
| - |
| - RefPtr<WebGLRenderbuffer> m_renderbuffer; |
| + RefPtrWillBeMember<WebGLRenderbuffer> m_renderbuffer; |
| }; |
| - PassRefPtr<WebGLFramebuffer::WebGLAttachment> WebGLRenderbufferAttachment::create(WebGLRenderbuffer* renderbuffer) |
| + PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLRenderbufferAttachment::create(WebGLRenderbuffer* renderbuffer) |
| + { |
| + return adoptRefWillBeNoop(new WebGLRenderbufferAttachment(renderbuffer)); |
| + } |
| + |
| + void WebGLRenderbufferAttachment::trace(Visitor* visitor) |
| { |
| - return adoptRef(new WebGLRenderbufferAttachment(renderbuffer)); |
| + visitor->trace(m_renderbuffer); |
| + WebGLFramebuffer::WebGLAttachment::trace(visitor); |
| } |
| WebGLRenderbufferAttachment::WebGLRenderbufferAttachment(WebGLRenderbuffer* renderbuffer) |
| @@ -141,10 +149,14 @@ namespace { |
| class WebGLTextureAttachment FINAL : public WebGLFramebuffer::WebGLAttachment { |
| public: |
| - static PassRefPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLTexture*, GLenum target, GLint level); |
| + static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLTexture*, GLenum target, GLint level); |
| + |
| + virtual void trace(Visitor*) OVERRIDE; |
| private: |
| WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level); |
| + WebGLTextureAttachment() { } |
| + |
| virtual GLsizei width() const OVERRIDE; |
| virtual GLsizei height() const OVERRIDE; |
| virtual GLenum format() const OVERRIDE; |
| @@ -156,16 +168,20 @@ namespace { |
| virtual void attach(blink::WebGraphicsContext3D*, GLenum attachment) OVERRIDE; |
| virtual void unattach(blink::WebGraphicsContext3D*, GLenum attachment) OVERRIDE; |
| - WebGLTextureAttachment() { }; |
| - |
| - RefPtr<WebGLTexture> m_texture; |
| + RefPtrWillBeMember<WebGLTexture> m_texture; |
| GLenum m_target; |
| GLint m_level; |
| }; |
| - PassRefPtr<WebGLFramebuffer::WebGLAttachment> WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level) |
| + PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level) |
| + { |
| + return adoptRefWillBeNoop(new WebGLTextureAttachment(texture, target, level)); |
| + } |
| + |
| + void WebGLTextureAttachment::trace(Visitor* visitor) |
| { |
| - return adoptRef(new WebGLTextureAttachment(texture, target, level)); |
| + visitor->trace(m_texture); |
| + WebGLFramebuffer::WebGLAttachment::trace(visitor); |
| } |
| WebGLTextureAttachment::WebGLTextureAttachment(WebGLTexture* texture, GLenum target, GLint level) |
| @@ -253,9 +269,9 @@ WebGLFramebuffer::WebGLAttachment::~WebGLAttachment() |
| { |
| } |
| -PassRefPtr<WebGLFramebuffer> WebGLFramebuffer::create(WebGLRenderingContextBase* ctx) |
| +PassRefPtrWillBeRawPtr<WebGLFramebuffer> WebGLFramebuffer::create(WebGLRenderingContextBase* ctx) |
| { |
| - return adoptRef(new WebGLFramebuffer(ctx)); |
| + return adoptRefWillBeNoop(new WebGLFramebuffer(ctx)); |
| } |
| WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx) |
| @@ -268,7 +284,7 @@ WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx) |
| WebGLFramebuffer::~WebGLFramebuffer() |
| { |
| - deleteObject(0); |
| + detachAndDeleteObject(); |
|
Ken Russell (switch to Gerrit)
2014/07/19 00:27:15
Please add a comment about the need to manually ca
sof
2014/07/19 19:55:57
Added a comment that explains why this WebGLContex
|
| } |
| void WebGLFramebuffer::setAttachmentForBoundFramebuffer(GLenum attachment, GLenum texTarget, WebGLTexture* texture, GLint level) |
| @@ -539,8 +555,10 @@ bool WebGLFramebuffer::hasStencilBuffer() const |
| void WebGLFramebuffer::deleteObjectImpl(blink::WebGraphicsContext3D* context3d, Platform3DObject object) |
| { |
| +#if !ENABLE(OILPAN) |
|
Ken Russell (switch to Gerrit)
2014/07/19 00:27:15
Please add a comment about why we can't iterate th
sof
2014/07/19 19:55:57
Yes, added a comment that tries to explains the tw
|
| for (AttachmentMap::iterator it = m_attachments.begin(); it != m_attachments.end(); ++it) |
| it->value->onDetached(context3d); |
| +#endif |
| context3d->deleteFramebuffer(object); |
| } |
| @@ -595,4 +613,10 @@ GLenum WebGLFramebuffer::getDrawBuffer(GLenum drawBuffer) |
| return GL_NONE; |
| } |
| +void WebGLFramebuffer::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_attachments); |
| + WebGLContextObject::trace(visitor); |
| +} |
| + |
| } |