OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/resources/raster_worker_pool_delegate.h" | |
6 | |
7 namespace cc { | |
8 | |
9 RasterWorkerPoolDelegate::RasterWorkerPoolDelegate( | |
10 RasterWorkerPoolClient* client, | |
11 RasterWorkerPool** raster_worker_pools, | |
12 size_t num_raster_worker_pools) | |
13 : client_(client), | |
14 raster_worker_pools_(raster_worker_pools, | |
15 raster_worker_pools + num_raster_worker_pools), | |
16 did_finish_running_tasks_pending_count_(0u), | |
17 did_finish_running_tasks_required_for_activation_pending_count_(0u) { | |
18 DCHECK(client_); | |
19 for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin(); | |
20 it != raster_worker_pools_.end(); | |
21 ++it) | |
22 (*it)->SetClient(this); | |
23 } | |
24 | |
25 RasterWorkerPoolDelegate::~RasterWorkerPoolDelegate() {} | |
26 | |
27 // static | |
28 scoped_ptr<RasterWorkerPoolDelegate> RasterWorkerPoolDelegate::Create( | |
29 RasterWorkerPoolClient* client, | |
30 RasterWorkerPool** raster_worker_pools, | |
31 size_t num_raster_worker_pools) { | |
32 return make_scoped_ptr(new RasterWorkerPoolDelegate( | |
33 client, raster_worker_pools, num_raster_worker_pools)); | |
34 } | |
35 | |
36 void RasterWorkerPoolDelegate::Shutdown() { | |
37 for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin(); | |
38 it != raster_worker_pools_.end(); | |
39 ++it) | |
40 (*it)->Shutdown(); | |
41 } | |
42 | |
43 void RasterWorkerPoolDelegate::ScheduleTasks(RasterTaskQueue* raster_queue) { | |
44 for (size_t i = 0; i < raster_worker_pools_.size(); ++i) | |
45 raster_worker_pools_[i]->ScheduleTasks(&raster_queue[i]); | |
46 | |
47 did_finish_running_tasks_pending_count_ = raster_worker_pools_.size(); | |
48 did_finish_running_tasks_required_for_activation_pending_count_ = | |
49 raster_worker_pools_.size(); | |
50 } | |
51 | |
52 void RasterWorkerPoolDelegate::CheckForCompletedTasks() { | |
53 for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin(); | |
54 it != raster_worker_pools_.end(); | |
55 ++it) | |
56 (*it)->CheckForCompletedTasks(); | |
57 } | |
58 | |
59 bool RasterWorkerPoolDelegate::ShouldForceTasksRequiredForActivationToComplete() | |
60 const { | |
61 return client_->ShouldForceTasksRequiredForActivationToComplete(); | |
62 } | |
63 | |
64 void RasterWorkerPoolDelegate::DidFinishRunningTasks() { | |
65 DCHECK_LT(0u, did_finish_running_tasks_pending_count_); | |
66 if (--did_finish_running_tasks_pending_count_) | |
67 return; | |
68 client_->DidFinishRunningTasks(); | |
69 } | |
70 | |
71 void RasterWorkerPoolDelegate::DidFinishRunningTasksRequiredForActivation() { | |
72 DCHECK_LT(0u, | |
73 did_finish_running_tasks_required_for_activation_pending_count_); | |
74 if (--did_finish_running_tasks_required_for_activation_pending_count_) | |
75 return; | |
76 client_->DidFinishRunningTasksRequiredForActivation(); | |
77 } | |
78 | |
79 } // namespace cc | |
OLD | NEW |