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

Unified Diff: Source/core/html/canvas/WebGLFramebuffer.cpp

Issue 365653002: Oilpan: move 2D Canvas and WebGL objects to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Have Nullable<T>::trace() use TraceIfNeeded<>. Created 6 years, 5 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: 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);
+}
+
}

Powered by Google App Engine
This is Rietveld 408576698