DMTask.cpp revision fa8cb1cf222f85aa898cfe979ac57da6a7b9f6f9
1#include "DMTask.h" 2#include "DMTaskRunner.h" 3#include "SkCommandLineFlags.h" 4 5DEFINE_bool(cpu, true, "Master switch for running CPU-bound work."); 6DEFINE_bool(gpu, true, "Master switch for running GPU-bound work."); 7 8namespace DM { 9 10Task::Task(Reporter* reporter, TaskRunner* taskRunner) 11 : fReporter(reporter) 12 , fTaskRunner(taskRunner) 13 , fDepth(0) { 14 fReporter->start(); 15} 16 17Task::Task(const Task& parent) 18 : fReporter(parent.fReporter) 19 , fTaskRunner(parent.fTaskRunner) 20 , fDepth(parent.depth() + 1) { 21 fReporter->start(); 22} 23 24void Task::fail(const char* msg) { 25 SkString failure(this->name()); 26 if (msg) { 27 failure.appendf(": %s", msg); 28 } 29 fReporter->fail(failure); 30} 31 32void Task::start() { 33 fStart = SkTime::GetMSecs(); 34} 35 36void Task::finish() { 37 fReporter->finish(this->name(), SkTime::GetMSecs() - fStart); 38} 39 40void Task::spawnChild(CpuTask* task) { 41 fTaskRunner->add(task); 42} 43 44CpuTask::CpuTask(Reporter* reporter, TaskRunner* taskRunner) : Task(reporter, taskRunner) {} 45CpuTask::CpuTask(const Task& parent) : Task(parent) {} 46 47void CpuTask::run() { 48 this->start(); 49 if (FLAGS_cpu && !this->shouldSkip()) { 50 this->draw(); 51 } 52 this->finish(); 53 SkDELETE(this); 54} 55 56GpuTask::GpuTask(Reporter* reporter, TaskRunner* taskRunner) : Task(reporter, taskRunner) {} 57 58void GpuTask::run(GrContextFactory& factory) { 59 this->start(); 60 if (FLAGS_gpu && !this->shouldSkip()) { 61 this->draw(&factory); 62 } 63 this->finish(); 64 SkDELETE(this); 65} 66 67 68 69} // namespace DM 70