| Index: Source/modules/webgl/WebGLProgram.cpp
|
| diff --git a/Source/modules/webgl/WebGLProgram.cpp b/Source/modules/webgl/WebGLProgram.cpp
|
| index 05ea305b310ba754f5ae598b92c147c8bdb5fe87..a2c4385869a5e0cfb29ef4ef7448f9ddbd94738d 100644
|
| --- a/Source/modules/webgl/WebGLProgram.cpp
|
| +++ b/Source/modules/webgl/WebGLProgram.cpp
|
| @@ -32,9 +32,9 @@
|
|
|
| namespace blink {
|
|
|
| -WebGLProgram* WebGLProgram::create(WebGLRenderingContextBase* ctx)
|
| -{
|
| - return new WebGLProgram(ctx);
|
| +PassRefPtrWillBeRawPtr<WebGLProgram> WebGLProgram::create(WebGLRenderingContextBase* ctx)
|
| +{
|
| + return adoptRefWillBeNoop(new WebGLProgram(ctx));
|
| }
|
|
|
| WebGLProgram::WebGLProgram(WebGLRenderingContextBase* ctx)
|
| @@ -48,14 +48,21 @@
|
|
|
| WebGLProgram::~WebGLProgram()
|
| {
|
| +#if ENABLE(OILPAN)
|
| // These heap objects handle detachment on their own. Clear out
|
| // the references to prevent deleteObjectImpl() from trying to do
|
| // same, as we cannot safely access other heap objects from this
|
| // destructor.
|
| m_vertexShader = nullptr;
|
| m_fragmentShader = nullptr;
|
| -
|
| - // See the comment in WebGLObject::detachAndDeleteObject().
|
| +#endif
|
| + // Always call detach here to ensure that platform object deletion
|
| + // happens with Oilpan enabled. It keeps the code regular to do it
|
| + // with or without Oilpan enabled.
|
| + //
|
| + // See comment in WebGLBuffer's destructor for additional
|
| + // information on why this is done for WebGLSharedObject-derived
|
| + // objects.
|
| detachAndDeleteObject();
|
| }
|
|
|
| @@ -113,9 +120,9 @@
|
| {
|
| switch (type) {
|
| case GL_VERTEX_SHADER:
|
| - return m_vertexShader;
|
| + return m_vertexShader.get();
|
| case GL_FRAGMENT_SHADER:
|
| - return m_fragmentShader;
|
| + return m_fragmentShader.get();
|
| default:
|
| return 0;
|
| }
|
|
|