Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(337)

Side by Side Diff: debugger/QT/SkGLWidget.cpp

Issue 18275002: Basic error checking for debugger GL widget. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkGLWidget.h" 10 #include "SkGLWidget.h"
(...skipping 11 matching lines...) Expand all
22 22
23 SkGLWidget::~SkGLWidget() { 23 SkGLWidget::~SkGLWidget() {
24 SkSafeUnref(fCurIntf); 24 SkSafeUnref(fCurIntf);
25 SkSafeUnref(fCurContext); 25 SkSafeUnref(fCurContext);
26 SkSafeUnref(fGpuDevice); 26 SkSafeUnref(fGpuDevice);
27 SkSafeUnref(fCanvas); 27 SkSafeUnref(fCanvas);
28 } 28 }
29 29
30 void SkGLWidget::initializeGL() { 30 void SkGLWidget::initializeGL() {
31 fCurIntf = GrGLCreateNativeInterface(); 31 fCurIntf = GrGLCreateNativeInterface();
32 if (!fCurIntf) {
33 return;
34 }
32 fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIn tf); 35 fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIn tf);
33 GrBackendRenderTargetDesc desc = this->getDesc(this->width(), this->height() ); 36 GrBackendRenderTargetDesc desc = this->getDesc(this->width(), this->height() );
34 desc.fOrigin = kBottomLeft_GrSurfaceOrigin; 37 desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
35 GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(desc) ; 38 GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(desc) ;
36 fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget); 39 fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget);
37 fCanvas = new SkCanvas(fGpuDevice); 40 fCanvas = new SkCanvas(fGpuDevice);
38 curRenderTarget->unref(); 41 curRenderTarget->unref();
39 42
40 glClearColor(1, 1, 1, 0); 43 glClearColor(1, 1, 1, 0);
41 glClearStencil(0); 44 glClearStencil(0);
42 glClear(GL_STENCIL_BUFFER_BIT); 45 glClear(GL_STENCIL_BUFFER_BIT);
43 } 46 }
44 47
45 void SkGLWidget::resizeGL(int w, int h) { 48 void SkGLWidget::resizeGL(int w, int h) {
46 GrBackendRenderTargetDesc desc = this->getDesc(w, h); 49 if (fCurContext) {
47 desc.fOrigin = kBottomLeft_GrSurfaceOrigin; 50 GrBackendRenderTargetDesc desc = this->getDesc(w, h);
48 GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(desc) ; 51 desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
49 SkSafeUnref(fGpuDevice); 52 GrRenderTarget* curRenderTarget = fCurContext->wrapBackendRenderTarget(d esc);
50 SkSafeUnref(fCanvas); 53 SkSafeUnref(fGpuDevice);
51 fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget); 54 SkSafeUnref(fCanvas);
52 fCanvas = new SkCanvas(fGpuDevice); 55 fGpuDevice = new SkGpuDevice(fCurContext, curRenderTarget);
56 fCanvas = new SkCanvas(fGpuDevice);
57 }
53 fDebugger->resize(w, h); 58 fDebugger->resize(w, h);
54 draw(); 59 draw();
55 } 60 }
56 61
57 void SkGLWidget::paintGL() { 62 void SkGLWidget::paintGL() {
58 if (!this->isHidden()) { 63 if (!this->isHidden() && fCanvas) {
59 fDebugger->draw(fCanvas); 64 fDebugger->draw(fCanvas);
60 // TODO(chudy): Implement an optional flush button in Gui. 65 // TODO(chudy): Implement an optional flush button in Gui.
61 fCanvas->flush(); 66 fCanvas->flush();
62 emit drawComplete(); 67 emit drawComplete();
63 } 68 }
64 } 69 }
65 70
66 GrBackendRenderTargetDesc SkGLWidget::getDesc(int w, int h) { 71 GrBackendRenderTargetDesc SkGLWidget::getDesc(int w, int h) {
67 GrBackendRenderTargetDesc desc; 72 GrBackendRenderTargetDesc desc;
68 desc.fWidth = SkScalarRound(this->width()); 73 desc.fWidth = SkScalarRound(this->width());
69 desc.fHeight = SkScalarRound(this->height()); 74 desc.fHeight = SkScalarRound(this->height());
70 desc.fConfig = kSkia8888_GrPixelConfig; 75 desc.fConfig = kSkia8888_GrPixelConfig;
71 GR_GL_GetIntegerv(fCurIntf, GR_GL_SAMPLES, &desc.fSampleCnt); 76 GR_GL_GetIntegerv(fCurIntf, GR_GL_SAMPLES, &desc.fSampleCnt);
72 GR_GL_GetIntegerv(fCurIntf, GR_GL_STENCIL_BITS, &desc.fStencilBits); 77 GR_GL_GetIntegerv(fCurIntf, GR_GL_STENCIL_BITS, &desc.fStencilBits);
73 GrGLint buffer; 78 GrGLint buffer;
74 GR_GL_GetIntegerv(fCurIntf, GR_GL_FRAMEBUFFER_BINDING, &buffer); 79 GR_GL_GetIntegerv(fCurIntf, GR_GL_FRAMEBUFFER_BINDING, &buffer);
75 desc.fRenderTargetHandle = buffer; 80 desc.fRenderTargetHandle = buffer;
76 81
77 return desc; 82 return desc;
78 } 83 }
79 84
80 #endif 85 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698