Chromium Code Reviews| Index: Source/core/html/canvas/WebGLContextObject.cpp |
| diff --git a/Source/core/html/canvas/WebGLContextObject.cpp b/Source/core/html/canvas/WebGLContextObject.cpp |
| index 83441589defb70bea4690902c64c94840d3ce119..c200697550d1e122750c832a22a91adef3586aa8 100644 |
| --- a/Source/core/html/canvas/WebGLContextObject.cpp |
| +++ b/Source/core/html/canvas/WebGLContextObject.cpp |
| @@ -28,19 +28,25 @@ |
| #include "core/html/canvas/WebGLContextObject.h" |
| #include "core/html/canvas/WebGLRenderingContextBase.h" |
| +#include "core/html/canvas/WebGLSharedWebGraphicsContext3D.h" |
| namespace WebCore { |
| WebGLContextObject::WebGLContextObject(WebGLRenderingContextBase* context) |
| : WebGLObject(context) |
| , m_context(context) |
| +#if ENABLE(OILPAN) |
| + , m_sharedWebGraphicsContext3D(context->sharedWebGraphicsContext3D()) |
| +#endif |
| { |
| } |
| WebGLContextObject::~WebGLContextObject() |
|
haraken
2014/07/15 15:04:56
Just to confirm: This destructor can drop the last
sof
2014/07/15 16:23:00
None known - it will happen during the same sweep
|
| { |
| +#if !ENABLE(OILPAN) |
| if (m_context) |
| m_context->removeContextObject(this); |
| +#endif |
| } |
| void WebGLContextObject::detachContext() |
| @@ -49,13 +55,26 @@ void WebGLContextObject::detachContext() |
| if (m_context) { |
| deleteObject(m_context->webContext()); |
| m_context->removeContextObject(this); |
| - m_context = 0; |
| + m_context = nullptr; |
| +#if ENABLE(OILPAN) |
| + m_sharedWebGraphicsContext3D.clear(); |
| +#endif |
| } |
| } |
| blink::WebGraphicsContext3D* WebGLContextObject::getAWebGraphicsContext3D() const |
| { |
| +#if ENABLE(OILPAN) |
| + return m_sharedWebGraphicsContext3D ? m_sharedWebGraphicsContext3D->webContext() : 0; |
| +#else |
| return m_context ? m_context->webContext() : 0; |
| +#endif |
| +} |
| + |
| +void WebGLContextObject::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_context); |
| + WebGLObject::trace(visitor); |
| } |
| } |