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 |