diff options
-rw-r--r-- | cc/resources/raster_worker_pool_delegate.cc | 19 | ||||
-rw-r--r-- | cc/resources/raster_worker_pool_delegate.h | 2 |
2 files changed, 7 insertions, 14 deletions
diff --git a/cc/resources/raster_worker_pool_delegate.cc b/cc/resources/raster_worker_pool_delegate.cc index 690b135..24456e8 100644 --- a/cc/resources/raster_worker_pool_delegate.cc +++ b/cc/resources/raster_worker_pool_delegate.cc @@ -15,7 +15,7 @@ RasterWorkerPoolDelegate::RasterWorkerPoolDelegate( task_runner_(task_runner), raster_worker_pools_(raster_worker_pools, raster_worker_pools + num_raster_worker_pools), - did_finish_running_tasks_pending_(num_raster_worker_pools, false), + has_scheduled_tasks_(num_raster_worker_pools, false), did_finish_running_tasks_pending_count_(0u), did_finish_running_tasks_required_for_activation_pending_count_(0u), run_did_finish_running_tasks_pending_(false), @@ -50,13 +50,14 @@ void RasterWorkerPoolDelegate::ScheduleTasks(RasterTaskQueue* raster_queue) { size_t did_finish_running_tasks_pending_count = 0u; for (size_t i = 0u; i < raster_worker_pools_.size(); ++i) { // Empty queue doesn't have to be scheduled unless raster worker pool has - // pending DidFinishRunningTasks notifications. - if (raster_queue[i].items.empty() && !did_finish_running_tasks_pending_[i]) + // some currently scheduled tasks. + if (raster_queue[i].items.empty() && !has_scheduled_tasks_[i]) continue; - did_finish_running_tasks_pending_[i] = true; - ++did_finish_running_tasks_pending_count; + has_scheduled_tasks_[i] = !raster_queue[i].items.empty(); raster_worker_pools_[i]->ScheduleTasks(&raster_queue[i]); + + ++did_finish_running_tasks_pending_count; } did_finish_running_tasks_pending_count_ = @@ -119,14 +120,6 @@ void RasterWorkerPoolDelegate::RunDidFinishRunningTasks() { if (!did_finish_running_tasks_pending_count_) client_->DidFinishRunningTasks(); - - // Reset |run_did_finish_running_tasks_pending_| vector if no notifications - // are pending. - if (!did_finish_running_tasks_required_for_activation_pending_count_ && - !did_finish_running_tasks_pending_count_) { - did_finish_running_tasks_pending_.assign( - did_finish_running_tasks_pending_.size(), false); - } } } // namespace cc diff --git a/cc/resources/raster_worker_pool_delegate.h b/cc/resources/raster_worker_pool_delegate.h index 3eec088..931d163 100644 --- a/cc/resources/raster_worker_pool_delegate.h +++ b/cc/resources/raster_worker_pool_delegate.h @@ -46,7 +46,7 @@ class RasterWorkerPoolDelegate : public RasterWorkerPoolClient { scoped_refptr<base::SequencedTaskRunner> task_runner_; typedef std::vector<RasterWorkerPool*> RasterWorkerPoolVector; RasterWorkerPoolVector raster_worker_pools_; - std::vector<bool> did_finish_running_tasks_pending_; + std::vector<bool> has_scheduled_tasks_; size_t did_finish_running_tasks_pending_count_; size_t did_finish_running_tasks_required_for_activation_pending_count_; bool run_did_finish_running_tasks_pending_; |