DMTask.cpp revision ca5bb87a31b8cfde73dfd7c554127ee9b3e1ab58
1#include "DMTask.h"
2
3#include "DMTaskRunner.h"
4#include "DMUtil.h"
5#include "SkBitmap.h"
6#include "SkCommandLineFlags.h"
7
8namespace DM {
9
10Task::Task(Reporter* reporter, TaskRunner* taskRunner)
11    : fReporter(reporter), fTaskRunner(taskRunner), fDepth(0) {
12    fReporter->start();
13}
14
15Task::Task(const Task& parent)
16    : INHERITED(parent)
17    , fReporter(parent.fReporter)
18    , fTaskRunner(parent.fTaskRunner)
19    , fDepth(parent.depth()+1) {
20    fReporter->start();
21}
22
23Task::~Task() {}
24
25void Task::run() {
26    if (!this->shouldSkip()) {
27        this->draw();
28    }
29    fReporter->finish();
30    fReporter->updateStatusLine();
31    delete this;
32}
33
34void Task::spawnChild(Task* task) {
35    if (!task->usesGpu()) {
36        fTaskRunner->add(task);
37    } else {
38        SkDEBUGFAIL("Sorry, we can't spawn GPU tasks. :(  See comment in TaskRunner::wait().");
39    }
40}
41
42void Task::fail() {
43    fReporter->fail(this->name());
44}
45
46}  // namespace DM
47