Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 /* | |
| 2 * Copyright 2015 Google Inc. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
|
robertphillips
2015/10/06 12:19:46
extra line here (and in other files) ?
joshualitt
2015/10/07 19:33:53
Acknowledged.
| |
| 6 * | |
| 7 */ | |
| 8 | |
| 9 #include "VisualStreamTimingModule.h" | |
| 10 | |
| 11 #include "SkCanvas.h" | |
| 12 | |
| 13 VisualStreamTimingModule::VisualStreamTimingModule(VisualBench* owner, bool preW armBeforeSample) | |
| 14 : fHasBeenReset(false) | |
| 15 , fPreWarmBeforeSample(preWarmBeforeSample) | |
|
robertphillips
2015/10/06 12:19:46
We take a ref on the guy who owns us ?
| |
| 16 , fOwner(SkRef(owner)) { | |
| 17 fBenchmarkStream.reset(new VisualBenchmarkStream); | |
| 18 } | |
| 19 | |
| 20 bool VisualStreamTimingModule::nextBenchmarkIfNecessary(SkCanvas* canvas) { | |
| 21 if (fBenchmark) { | |
| 22 return true; | |
| 23 } | |
| 24 | |
| 25 fBenchmark.reset(fBenchmarkStream->next()); | |
| 26 if (!fBenchmark) { | |
| 27 return false; | |
| 28 } | |
| 29 | |
| 30 fOwner->clear(canvas, SK_ColorWHITE, 2); | |
| 31 | |
| 32 fBenchmark->delayedSetup(); | |
| 33 fBenchmark->preTimingHooks(canvas); | |
| 34 return true; | |
| 35 } | |
| 36 | |
| 37 void VisualStreamTimingModule::draw(SkCanvas* canvas) { | |
| 38 if (!this->nextBenchmarkIfNecessary(canvas)) { | |
| 39 SkDebugf("Exiting VisualBench successfully\n"); | |
| 40 fOwner->closeWindow(); | |
| 41 return; | |
| 42 } | |
| 43 | |
| 44 if (fHasBeenReset) { | |
| 45 fHasBeenReset = false; | |
| 46 fBenchmark->preTimingHooks(canvas); | |
| 47 } | |
| 48 | |
|
robertphillips
2015/10/06 12:19:46
Why not have a 'getCurBenchMark' method on this cl
joshualitt
2015/10/07 19:33:53
will fix in a follow on
| |
| 49 this->renderFrame(canvas, fBenchmark, fTSM.loops()); | |
| 50 fOwner->present(); | |
| 51 TimingStateMachine::ParentEvents event = fTSM.nextFrame(fPreWarmBeforeSample ); | |
| 52 switch (event) { | |
| 53 case TimingStateMachine::kReset_ParentEvents: | |
| 54 fBenchmark->postTimingHooks(canvas); | |
| 55 fOwner->reset(); | |
| 56 fHasBeenReset = true; | |
| 57 break; | |
| 58 case TimingStateMachine::kTiming_ParentEvents: | |
| 59 break; | |
| 60 case TimingStateMachine::kTimingFinished_ParentEvents: | |
| 61 fBenchmark->postTimingHooks(canvas); | |
| 62 fOwner->reset(); | |
| 63 if (this->timingFinished(fBenchmark, fTSM.loops(), fTSM.lastMeasurem ent())) { | |
| 64 fTSM.nextBenchmark(canvas, fBenchmark); | |
| 65 fBenchmark.reset(nullptr); | |
| 66 } else { | |
| 67 fHasBeenReset = true; | |
| 68 } | |
| 69 break; | |
| 70 } | |
| 71 } | |
| OLD | NEW |