Chromium Code Reviews| Index: Source/core/html/canvas/WebGLProgram.cpp |
| diff --git a/Source/core/html/canvas/WebGLProgram.cpp b/Source/core/html/canvas/WebGLProgram.cpp |
| index e1e49594139fa2240e470bc50a743be707379c4e..db97f09ea845d0e6f4285e779260568903478def 100644 |
| --- a/Source/core/html/canvas/WebGLProgram.cpp |
| +++ b/Source/core/html/canvas/WebGLProgram.cpp |
| @@ -27,13 +27,14 @@ |
| #include "core/html/canvas/WebGLProgram.h" |
| +#include "core/html/canvas/WebGLContextGroup.h" |
| #include "core/html/canvas/WebGLRenderingContextBase.h" |
| namespace WebCore { |
| -PassRefPtr<WebGLProgram> WebGLProgram::create(WebGLRenderingContextBase* ctx) |
| +PassRefPtrWillBeRawPtr<WebGLProgram> WebGLProgram::create(WebGLRenderingContextBase* ctx) |
| { |
| - return adoptRef(new WebGLProgram(ctx)); |
| + return adoptRefWillBeNoop(new WebGLProgram(ctx)); |
| } |
| WebGLProgram::WebGLProgram(WebGLRenderingContextBase* ctx) |
| @@ -48,7 +49,11 @@ WebGLProgram::WebGLProgram(WebGLRenderingContextBase* ctx) |
| WebGLProgram::~WebGLProgram() |
| { |
| - deleteObject(0); |
| +#if ENABLE(OILPAN) |
| + m_vertexShader = nullptr; |
| + m_fragmentShader = nullptr; |
| +#endif |
| + 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; also explained why the above clearing is do
|
| } |
| void WebGLProgram::deleteObjectImpl(blink::WebGraphicsContext3D* context3d, Platform3DObject obj) |
| @@ -174,7 +179,9 @@ void WebGLProgram::cacheInfoIfNeeded() |
| if (!object()) |
| return; |
| - blink::WebGraphicsContext3D* context = getAWebGraphicsContext3D(); |
| + if (!contextGroup()) |
| + return; |
| + blink::WebGraphicsContext3D* context = contextGroup()->getAWebGraphicsContext3D(); |
| if (!context) |
| return; |
| GLint linkStatus = 0; |
| @@ -185,4 +192,11 @@ void WebGLProgram::cacheInfoIfNeeded() |
| m_infoValid = true; |
| } |
| +void WebGLProgram::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_vertexShader); |
| + visitor->trace(m_fragmentShader); |
| + WebGLSharedObject::trace(visitor); |
| +} |
| + |
| } |