Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| index cdfc165754a0c6ea7129fb5e832593a80cc2646f..56be35281ca5f4dd14b339e92764dde2b08220f6 100644 |
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
| @@ -921,7 +921,7 @@ WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa |
| } |
| m_drawingBuffer = buffer.release(); |
| - m_drawingBuffer->addNewMailboxCallback(WTF::bind(&WebGLRenderingContextBase::notifyCanvasContextChanged, createWeakThisPointer())); |
| + m_drawingBuffer->addNewMailboxCallback(WTF::bind(&WebGLRenderingContextBase::notifyCanvasContextChanged, wrapWeakPersistent(this))); |
| drawingBuffer()->bind(GL_FRAMEBUFFER); |
| setupFlags(); |
| @@ -1041,13 +1041,13 @@ void WebGLRenderingContextBase::initializeNewContext() |
| drawingBuffer()->contextProvider()->setLostContextCallback( |
| WebClosure(bind( |
| &WebGLRenderingContextBase::forceLostContext, |
| - createWeakThisPointer(), |
| + wrapWeakPersistent(this), |
| WebGLRenderingContextBase::RealLostContext, |
| WebGLRenderingContextBase::Auto))); |
| drawingBuffer()->contextProvider()->setErrorMessageCallback( |
| WebFunction<void(const char*, int32_t)>(bind( |
| &WebGLRenderingContextBase::onErrorMessage, |
| - createWeakThisPointer()))); |
| + wrapWeakPersistent(this)))); |
| // If WebGL 2, the PRIMITIVE_RESTART_FIXED_INDEX should be always enabled. |
| // See the section <Primitive Restart is Always Enabled> in WebGL 2 spec: |
| @@ -1158,6 +1158,7 @@ void WebGLRenderingContextBase::destroyContext() |
| drawingBuffer()->contextProvider()->setLostContextCallback(WebClosure()); |
| drawingBuffer()->contextProvider()->setErrorMessageCallback(WebFunction<void(const char*, int32_t)>()); |
| + drawingBuffer()->addNewMailboxCallback(nullptr); |
|
sof
2016/06/24 05:24:08
It makes sense, but why is this needed now?
tzik
2016/06/24 05:57:06
The error caught a Persistent leak after the termi
sof
2016/06/24 06:45:32
CT(W)Ps are exempt from checking for leaks when ru
tzik
2016/06/24 07:04:58
Makes sense.
|
| ASSERT(drawingBuffer()); |
| m_drawingBuffer->beginDestruction(); |
| @@ -6109,7 +6110,7 @@ void WebGLRenderingContextBase::maybeRestoreContext(Timer<WebGLRenderingContextB |
| } |
| m_drawingBuffer = buffer.release(); |
| - m_drawingBuffer->addNewMailboxCallback(WTF::bind(&WebGLRenderingContextBase::notifyCanvasContextChanged, createWeakThisPointer())); |
| + m_drawingBuffer->addNewMailboxCallback(WTF::bind(&WebGLRenderingContextBase::notifyCanvasContextChanged, wrapWeakPersistent(this))); |
| drawingBuffer()->bind(GL_FRAMEBUFFER); |
| m_lostContextErrors.clear(); |