aboutsummaryrefslogtreecommitdiffhomepage
path: root/debugger
diff options
context:
space:
mode:
authorGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-01 13:54:10 +0000
committerGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-01 13:54:10 +0000
commit0b4d6b289c89f0b6c6891e2fb812fa3614cb55a2 (patch)
treed20b70e62e0005ffd55b2f3ed021ca9d26d511e4 /debugger
parent637d24c18eb47b1720fce8a3d2599377a2ad8212 (diff)
Basic error checking for debugger GL widget.
Currently the debugger segfaults if the GL context cannot be created. This change allows the debugger to build with GL support, but still run if the GL context cannot be created at runtime. R=robertphillips@google.com Review URL: https://codereview.chromium.org/18275002 git-svn-id: http://skia.googlecode.com/svn/trunk@9834 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'debugger')
-rw-r--r--debugger/QT/SkGLWidget.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/debugger/QT/SkGLWidget.cpp b/debugger/QT/SkGLWidget.cpp
index 3dc60598ad..ae3155a4a6 100644
--- a/debugger/QT/SkGLWidget.cpp
+++ b/debugger/QT/SkGLWidget.cpp
@@ -29,6 +29,9 @@ SkGLWidget::~SkGLWidget() {
void SkGLWidget::initializeGL() {
fCurIntf = GrGLCreateNativeInterface();
+ if (!fCurIntf) {
+ return;
+ }
fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIntf);
GrBackendRenderTargetDesc desc = this->getDesc(this->width(), this->height());
desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
@@ -43,19 +46,21 @@ void SkGLWidget::initializeGL() {
}
void SkGLWidget::resizeGL(int w, int h) {
- GrBackendRenderTargetDesc desc = this->getDesc(w, h);
- desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
- GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(desc);
- SkSafeUnref(fGpuDevice);
- SkSafeUnref(fCanvas);
- fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget);
- fCanvas = new SkCanvas(fGpuDevice);
+ if (fCurContext) {
+ GrBackendRenderTargetDesc desc = this->getDesc(w, h);
+ desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
+ GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(desc);
+ SkSafeUnref(fGpuDevice);
+ SkSafeUnref(fCanvas);
+ fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget);
+ fCanvas = new SkCanvas(fGpuDevice);
+ }
fDebugger->resize(w, h);
draw();
}
void SkGLWidget::paintGL() {
- if (!this->isHidden()) {
+ if (!this->isHidden() && fCanvas) {
fDebugger->draw(fCanvas);
// TODO(chudy): Implement an optional flush button in Gui.
fCanvas->flush();