| Index: dm/DMTaskRunner.cpp
|
| diff --git a/dm/DMTaskRunner.cpp b/dm/DMTaskRunner.cpp
|
| index 8a0bc838e174d96b0c87986e3a4af89725a8b93d..92381a7a7ec1052d45e72f158f12c9e95e5fb623 100644
|
| --- a/dm/DMTaskRunner.cpp
|
| +++ b/dm/DMTaskRunner.cpp
|
| @@ -3,19 +3,15 @@
|
|
|
| namespace DM {
|
|
|
| -TaskRunner::TaskRunner(int cpuThreads, int gpuThreads) : fCpu(cpuThreads), fGpu(gpuThreads) {}
|
| -
|
| -void TaskRunner::add(CpuTask* task) { fCpu.add(task); }
|
| -void TaskRunner::addNext(CpuTask* task) { fCpu.addNext(task); }
|
| -void TaskRunner::add(GpuTask* task) { fGpu.add(task); }
|
| +void TaskRunner::add(CpuTask* task) { fCpuWork.add(task); }
|
| +void TaskRunner::add(GpuTask* task) { fGpuWork.push(task); }
|
|
|
| void TaskRunner::wait() {
|
| - // These wait calls block until each threadpool is done. We don't allow
|
| - // spawning new child GPU tasks, so we can wait for that first knowing
|
| - // we'll never try to add to it later. Same can't be said of the CPU pool:
|
| - // both CPU and GPU tasks can spawn off new CPU work, so we wait for that last.
|
| - fGpu.wait();
|
| - fCpu.wait();
|
| + GrContextFactory factory;
|
| + for (int i = 0; i < fGpuWork.count(); i++) {
|
| + fGpuWork[i]->run(&factory);
|
| + }
|
| + fCpuWork.wait();
|
| }
|
|
|
| } // namespace DM
|
|
|