Chromium Code Reviews| Index: tools/timer/GpuTimer.cpp | 
| diff --git a/bench/BenchGpuTimer_gl.cpp b/tools/timer/GpuTimer.cpp | 
| similarity index 59% | 
| rename from bench/BenchGpuTimer_gl.cpp | 
| rename to tools/timer/GpuTimer.cpp | 
| index 349fc1529de6ac32754950f20c1ab5bd6037ecb2..aac10a3b0796b82b93e23ff2c80fc4c49d5de749 100644 | 
| --- a/bench/BenchGpuTimer_gl.cpp | 
| +++ b/tools/timer/GpuTimer.cpp | 
| @@ -5,34 +5,37 @@ | 
| * Use of this source code is governed by a BSD-style license that can be | 
| * found in the LICENSE file. | 
| */ | 
| -#include "BenchGpuTimer_gl.h" | 
| +#include "GpuTimer.h" | 
| #include "gl/SkGLContextHelper.h" | 
| #include "gl/GrGLUtil.h" | 
| -BenchGpuTimer::BenchGpuTimer(const SkGLContextHelper* glctx) { | 
| - fContext = glctx; | 
| - glctx->ref(); | 
| - glctx->makeCurrent(); | 
| - fStarted = false; | 
| - fSupported = GrGLGetVersion(glctx->gl()) > GR_GL_VER(3,3) || | 
| - glctx->hasExtension("GL_ARB_timer_query") || | 
| - glctx->hasExtension("GL_EXT_timer_query"); | 
| +GpuTimer::GpuTimer(const SkGLContextHelper* glctx) : fContext(glctx) { | 
| + if (fContext) { | 
| 
 
tfarina
2014/06/20 18:05:58
if glctx is NULL, aren't we going to leaving fStar
 
tfarina
2014/06/20 18:06:40
s/leaving/leave
 
mtklein
2014/06/20 18:08:18
Yes.  If fContext is NULL, we'll never touch any o
 
 | 
| + fContext->ref(); | 
| + fContext->makeCurrent(); | 
| + fStarted = false; | 
| + fSupported = GrGLGetVersion(fContext->gl()) > GR_GL_VER(3,3) || | 
| + fContext->hasExtension("GL_ARB_timer_query") || | 
| + fContext->hasExtension("GL_EXT_timer_query"); | 
| - if (fSupported) { | 
| - SK_GL(*glctx, GenQueries(1, &fQuery)); | 
| + if (fSupported) { | 
| + SK_GL(*fContext, GenQueries(1, &fQuery)); | 
| + } | 
| } | 
| } | 
| -BenchGpuTimer::~BenchGpuTimer() { | 
| - if (fSupported) { | 
| - fContext->makeCurrent(); | 
| - SK_GL(*fContext, DeleteQueries(1, &fQuery)); | 
| +GpuTimer::~GpuTimer() { | 
| + if (fContext) { | 
| + if (fSupported) { | 
| + fContext->makeCurrent(); | 
| + SK_GL(*fContext, DeleteQueries(1, &fQuery)); | 
| + } | 
| + fContext->unref(); | 
| } | 
| - fContext->unref(); | 
| } | 
| -void BenchGpuTimer::startGpu() { | 
| - if (fSupported) { | 
| +void GpuTimer::start() { | 
| + if (fContext && fSupported) { | 
| fContext->makeCurrent(); | 
| fStarted = true; | 
| SK_GL(*fContext, BeginQuery(GR_GL_TIME_ELAPSED, fQuery)); | 
| @@ -43,8 +46,8 @@ void BenchGpuTimer::startGpu() { | 
| * It is important to stop the cpu clocks first, | 
| * as this will cpu wait for the gpu to finish. | 
| */ | 
| -double BenchGpuTimer::endGpu() { | 
| - if (fSupported) { | 
| +double GpuTimer::end() { | 
| + if (fContext && fSupported) { | 
| fStarted = false; | 
| fContext->makeCurrent(); | 
| SK_GL(*fContext, EndQuery(GR_GL_TIME_ELAPSED)); | 
| @@ -52,8 +55,8 @@ double BenchGpuTimer::endGpu() { | 
| GrGLint available = 0; | 
| while (!available) { | 
| SK_GL_NOERRCHECK(*fContext, GetQueryObjectiv(fQuery, | 
| - GR_GL_QUERY_RESULT_AVAILABLE, | 
| - &available)); | 
| + GR_GL_QUERY_RESULT_AVAILABLE, | 
| + &available)); | 
| // If GetQueryObjectiv is erroring out we need some alternative | 
| // means of breaking out of this loop | 
| GrGLenum error; |