OLD | NEW |
1 #include "DMTask.h" | 1 #include "DMTask.h" |
2 | |
3 #include "DMTaskRunner.h" | 2 #include "DMTaskRunner.h" |
4 #include "DMUtil.h" | |
5 #include "SkBitmap.h" | |
6 #include "SkCommandLineFlags.h" | |
7 | 3 |
8 namespace DM { | 4 namespace DM { |
9 | 5 |
10 Task::Task(Reporter* reporter, TaskRunner* taskRunner) | 6 Task::Task(Reporter* reporter, TaskRunner* taskRunner) |
11 : fReporter(reporter), fTaskRunner(taskRunner), fDepth(0) { | 7 : fReporter(reporter) |
| 8 , fTaskRunner(taskRunner) |
| 9 , fDepth(0) { |
12 fReporter->start(); | 10 fReporter->start(); |
13 } | 11 } |
14 | 12 |
15 Task::Task(const Task& parent) | 13 Task::Task(const Task& parent) |
16 : INHERITED(parent) | 14 : fReporter(parent.fReporter) |
17 , fReporter(parent.fReporter) | |
18 , fTaskRunner(parent.fTaskRunner) | 15 , fTaskRunner(parent.fTaskRunner) |
19 , fDepth(parent.depth()+1) { | 16 , fDepth(parent.depth() + 1) { |
20 fReporter->start(); | 17 fReporter->start(); |
21 } | 18 } |
22 | 19 |
23 Task::~Task() {} | |
24 | |
25 void Task::run() { | |
26 if (!this->shouldSkip()) { | |
27 this->draw(); | |
28 } | |
29 fReporter->finish(this->name()); | |
30 delete this; | |
31 } | |
32 | |
33 void Task::spawnChild(Task* task) { | |
34 if (!task->usesGpu()) { | |
35 fTaskRunner->add(task); | |
36 } else { | |
37 SkDEBUGFAIL("Sorry, we can't spawn GPU tasks. :( See comment in TaskRun
ner::wait()."); | |
38 } | |
39 } | |
40 | |
41 void Task::fail(const char* msg) { | 20 void Task::fail(const char* msg) { |
42 SkString failure(this->name()); | 21 SkString failure(this->name()); |
43 if (msg) { | 22 if (msg) { |
44 failure.appendf(": %s", msg); | 23 failure.appendf(": %s", msg); |
45 } | 24 } |
46 fReporter->fail(failure); | 25 fReporter->fail(failure); |
47 } | 26 } |
48 | 27 |
49 GrContextFactory* Task::getGrContextFactory() const { | 28 void Task::finish() { |
50 return fTaskRunner->getGrContextFactory(); | 29 fReporter->finish(this->name()); |
51 } | 30 } |
52 | 31 |
| 32 void Task::spawnChild(CpuTask* task) { |
| 33 fTaskRunner->add(task); |
| 34 } |
| 35 |
| 36 CpuTask::CpuTask(Reporter* reporter, TaskRunner* taskRunner) : Task(reporter, ta
skRunner) {} |
| 37 CpuTask::CpuTask(const Task& parent) : Task(parent) {} |
| 38 |
| 39 void CpuTask::run() { |
| 40 if (!this->shouldSkip()) { |
| 41 this->draw(); |
| 42 } |
| 43 this->finish(); |
| 44 SkDELETE(this); |
| 45 } |
| 46 |
| 47 GpuTask::GpuTask(Reporter* reporter, TaskRunner* taskRunner) : Task(reporter, ta
skRunner) {} |
| 48 |
| 49 void GpuTask::run(GrContextFactory& factory) { |
| 50 if (!this->shouldSkip()) { |
| 51 this->draw(&factory); |
| 52 } |
| 53 this->finish(); |
| 54 SkDELETE(this); |
| 55 } |
| 56 |
| 57 |
| 58 |
53 } // namespace DM | 59 } // namespace DM |
OLD | NEW |