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

Unified Diff: Source/modules/webgl/WebGLFramebuffer.cpp

Issue 1234883002: [Oilpan] Migrate classes under module/webgl onto oilpan heap (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Detach extensions in dtor of RenderingContextBase Created 5 years, 4 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/modules/webgl/WebGLFramebuffer.cpp
diff --git a/Source/modules/webgl/WebGLFramebuffer.cpp b/Source/modules/webgl/WebGLFramebuffer.cpp
index e9dee4049417d46953014e526d414bf565c1c9bd..5853a219d8470c43ea8739db1798e220e2337186 100644
--- a/Source/modules/webgl/WebGLFramebuffer.cpp
+++ b/Source/modules/webgl/WebGLFramebuffer.cpp
@@ -38,7 +38,7 @@ namespace {
class WebGLRenderbufferAttachment final : public WebGLFramebuffer::WebGLAttachment {
public:
- static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLRenderbuffer*);
+ static WebGLFramebuffer::WebGLAttachment* create(WebGLRenderbuffer*);
DECLARE_VIRTUAL_TRACE();
@@ -57,12 +57,12 @@ private:
void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) override;
void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) override;
- RefPtrWillBeMember<WebGLRenderbuffer> m_renderbuffer;
+ Member<WebGLRenderbuffer> m_renderbuffer;
};
-PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLRenderbufferAttachment::create(WebGLRenderbuffer* renderbuffer)
+WebGLFramebuffer::WebGLAttachment* WebGLRenderbufferAttachment::create(WebGLRenderbuffer* renderbuffer)
{
- return adoptRefWillBeNoop(new WebGLRenderbufferAttachment(renderbuffer));
+ return new WebGLRenderbufferAttachment(renderbuffer);
}
DEFINE_TRACE(WebGLRenderbufferAttachment)
@@ -140,12 +140,13 @@ void WebGLRenderbufferAttachment::unattach(WebGraphicsContext3D* context, GLenum
GLenum WebGLRenderbufferAttachment::type() const
{
+ notImplemented();
return 0;
}
class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment {
public:
- static PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> create(WebGLTexture*, GLenum target, GLint level);
+ static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum target, GLint level);
DECLARE_VIRTUAL_TRACE();
@@ -164,14 +165,14 @@ private:
void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) override;
void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) override;
- RefPtrWillBeMember<WebGLTexture> m_texture;
+ Member<WebGLTexture> m_texture;
GLenum m_target;
GLint m_level;
};
-PassRefPtrWillBeRawPtr<WebGLFramebuffer::WebGLAttachment> WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level)
+WebGLFramebuffer::WebGLAttachment* WebGLTextureAttachment::create(WebGLTexture* texture, GLenum target, GLint level)
{
- return adoptRefWillBeNoop(new WebGLTextureAttachment(texture, target, level));
+ return new WebGLTextureAttachment(texture, target, level);
}
DEFINE_TRACE(WebGLTextureAttachment)
@@ -324,9 +325,9 @@ WebGLFramebuffer::WebGLAttachment::~WebGLAttachment()
{
}
-PassRefPtrWillBeRawPtr<WebGLFramebuffer> WebGLFramebuffer::create(WebGLRenderingContextBase* ctx)
+WebGLFramebuffer* WebGLFramebuffer::create(WebGLRenderingContextBase* ctx)
{
- return adoptRefWillBeNoop(new WebGLFramebuffer(ctx));
+ return new WebGLFramebuffer(ctx);
}
WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx)
@@ -339,14 +340,11 @@ WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContextBase* ctx)
WebGLFramebuffer::~WebGLFramebuffer()
{
- // Delete the platform framebuffer resource. Explicit detachment
- // is for the benefit of Oilpan, where the framebuffer object
- // isn't detached when it and the WebGLRenderingContextBase object
- // it is registered with are both finalized. Without Oilpan, the
- // object will have been detached.
- //
- // To keep the code regular, the trivial detach()ment is always
- // performed.
+ // Attachments in |m_attachments| will be deleted from other places, so we
+ // clear it to avoid deleting those attachments in detachAndDeleteObject().
+ m_attachments.clear();
sof 2015/08/09 08:35:21 I don't think is quite correct with Oilpan: - if
haraken 2015/08/09 14:16:45 Yeah, you're right -- I think we can just remove t
sof 2015/08/09 15:07:37 That's fine, I think. The Oilpan changes made here
peria 2015/08/10 03:15:23 Thanks, I filed an issue to follow it up. http://c
+
+ // See the comment in WebGLObject::detachAndDeleteObject().
detachAndDeleteObject();
}
@@ -581,17 +579,17 @@ bool WebGLFramebuffer::hasStencilBuffer() const
void WebGLFramebuffer::deleteObjectImpl(WebGraphicsContext3D* context3d)
{
-#if !ENABLE(OILPAN)
- // With Oilpan, both the AttachmentMap and its WebGLAttachment objects are
- // GCed objects and cannot be accessed, as they may have been finalized
+ // Both the AttachmentMap and its WebGLAttachment objects are GCed
sof 2015/08/09 08:35:20 The code and the comment is inconsistent now; do t
peria 2015/08/10 03:15:23 Removed latter half comment. I think it is not nee
+ // objects and cannot be accessed, as they may have been finalized
// already during the same GC sweep.
//
// The WebGLAttachment-derived classes instead handle detachment
// on their own when finalizing, so the explicit notification is
// not needed.
- for (const auto& attachment : m_attachments)
- attachment.value->onDetached(context3d);
-#endif
+ if (!m_attachments.isEmpty()) {
haraken 2015/08/07 07:43:58 This check won't be needed, since if the m_attache
peria 2015/08/10 03:15:23 Done.
+ for (const auto& attachment : m_attachments)
+ attachment.value->onDetached(context3d);
+ }
context3d->deleteFramebuffer(m_object);
m_object = 0;
@@ -663,9 +661,7 @@ bool WebGLFramebuffer::getReadBufferFormatAndType(GLenum* format, GLenum* type)
DEFINE_TRACE(WebGLFramebuffer)
{
-#if ENABLE(OILPAN)
visitor->trace(m_attachments);
-#endif
WebGLContextObject::trace(visitor);
}

Powered by Google App Engine
This is Rietveld 408576698