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); |
+} |
+ |
} |