Index: debugger/QT/SkGLWidget.cpp |
diff --git a/debugger/QT/SkGLWidget.cpp b/debugger/QT/SkGLWidget.cpp |
index 1fbedf17a77f14aa8b0f50d802cea94ce009a3b5..67202390247d99874dd02424c4f565b36fdc3309 100644 |
--- a/debugger/QT/SkGLWidget.cpp |
+++ b/debugger/QT/SkGLWidget.cpp |
@@ -32,19 +32,16 @@ void SkGLWidget::initializeGL() { |
if (!fCurIntf) { |
return; |
} |
- if (!fCurContext) { |
- fCurContext.reset(GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIntf.get())); |
- } |
- if (!fCurContext) { |
- return; |
- } |
- |
// The call may come multiple times, for example after setSampleCount(). The QGLContext will be |
// different, but we do not have a mechanism to catch the destroying of QGLContext, so that |
- // proper resource cleanup could be made. Instead, we assume that the underlying GL context |
- // never actually changes. If it would, we could not destroy the resources. |
+ // proper resource cleanup could be made. |
+ if (fCurContext) { |
+ fCurContext->abandonContext(); |
+ } |
fGpuDevice.reset(NULL); |
fCanvas.reset(NULL); |
+ |
+ fCurContext.reset(GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIntf.get())); |
} |
void SkGLWidget::createRenderTarget() { |
@@ -76,6 +73,7 @@ void SkGLWidget::resizeGL(int w, int h) { |
void SkGLWidget::paintGL() { |
if (!this->isHidden() && fCanvas) { |
+ fCurContext->resetContext(); |
fDebugger->draw(fCanvas.get()); |
// TODO(chudy): Implement an optional flush button in Gui. |
fCanvas->flush(); |