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..cdd3565ef37abff52a813be0e0651a4ae7dd08da 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,6 +49,11 @@ WebGLProgram::WebGLProgram(WebGLRenderingContextBase* ctx) |
WebGLProgram::~WebGLProgram() |
{ |
+#if ENABLE(OILPAN) |
+ m_vertexShader = nullptr; |
+ m_fragmentShader = nullptr; |
+#endif |
+ detach(); |
deleteObject(0); |
} |
@@ -174,7 +180,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 +193,11 @@ void WebGLProgram::cacheInfoIfNeeded() |
m_infoValid = true; |
} |
+void WebGLProgram::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_vertexShader); |
+ visitor->trace(m_fragmentShader); |
+ WebGLSharedObject::trace(visitor); |
+} |
+ |
} |