Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Side by Side Diff: cc/resources/raster_worker_pool_delegate.cc

Issue 165603002: cc: Move GPU raster to DirectRasterWorkerPool. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove rastertaskqueue changes and refactor worker pool delegate Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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** first_raster_worker_pool,
12 RasterWorkerPool** last_raster_worker_pool)
13 : client_(client),
14 raster_worker_pools_(first_raster_worker_pool, last_raster_worker_pool),
15 did_finish_running_tasks_pending_count_(0u),
16 did_finish_running_tasks_required_for_activation_pending_count_(0u) {
17 DCHECK(client_);
18 for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin();
19 it != raster_worker_pools_.end();
20 ++it)
21 (*it)->SetClient(this);
22 }
23
24 RasterWorkerPoolDelegate::~RasterWorkerPoolDelegate() {}
25
26 // static
27 scoped_ptr<RasterWorkerPoolDelegate> RasterWorkerPoolDelegate::Create(
28 RasterWorkerPoolClient* client,
29 RasterWorkerPool** first_raster_worker_pool,
30 RasterWorkerPool** last_raster_worker_pool) {
31 return make_scoped_ptr(new RasterWorkerPoolDelegate(
32 client, first_raster_worker_pool, last_raster_worker_pool));
33 }
34
35 void RasterWorkerPoolDelegate::Shutdown() {
36 for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin();
37 it != raster_worker_pools_.end();
38 ++it)
39 (*it)->Shutdown();
40 }
41
42 void RasterWorkerPoolDelegate::ScheduleTasks(
43 RasterWorkerPool::RasterTask::Queue* 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 DCHECK(client_);
62 return client_->ShouldForceTasksRequiredForActivationToComplete();
63 }
64
65 void RasterWorkerPoolDelegate::DidFinishRunningTasks() {
66 DCHECK_LT(0u, did_finish_running_tasks_pending_count_);
67 if (--did_finish_running_tasks_pending_count_)
68 return;
69 client_->DidFinishRunningTasks();
70 }
71
72 void RasterWorkerPoolDelegate::DidFinishRunningTasksRequiredForActivation() {
73 DCHECK_LT(0u,
74 did_finish_running_tasks_required_for_activation_pending_count_);
75 if (--did_finish_running_tasks_required_for_activation_pending_count_)
76 return;
77 client_->DidFinishRunningTasksRequiredForActivation();
78 }
79
80 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698