diff options
Diffstat (limited to 'dm/DMTask.cpp')
-rw-r--r-- | dm/DMTask.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/dm/DMTask.cpp b/dm/DMTask.cpp index 8b6a94e52a..83df84933f 100644 --- a/dm/DMTask.cpp +++ b/dm/DMTask.cpp @@ -37,7 +37,7 @@ void Task::finish() { fReporter->finish(this->name(), SkTime::GetMSecs() - fStart); } -void Task::spawnChild(CpuTask* task) { +void Task::reallySpawnChild(CpuTask* task) { fTaskRunner->add(task); } @@ -53,6 +53,11 @@ void CpuTask::run() { SkDELETE(this); } +void CpuTask::spawnChild(CpuTask* task) { + // Run children serially on this (CPU) thread. This tends to save RAM and is usually no slower. + task->run(); +} + GpuTask::GpuTask(Reporter* reporter, TaskRunner* taskRunner) : Task(reporter, taskRunner) {} void GpuTask::run(GrContextFactory& factory) { @@ -64,6 +69,9 @@ void GpuTask::run(GrContextFactory& factory) { SkDELETE(this); } - +void GpuTask::spawnChild(CpuTask* task) { + // Really spawn a new task so it runs on the CPU threadpool instead of the GPU one we're on now. + this->reallySpawnChild(task); +} } // namespace DM |