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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: cc/resources/raster_worker_pool_delegate.cc
diff --git a/cc/resources/raster_worker_pool_delegate.cc b/cc/resources/raster_worker_pool_delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e9ad8b76bfb1aa3c3091768abd052096d8401ef9
--- /dev/null
+++ b/cc/resources/raster_worker_pool_delegate.cc
@@ -0,0 +1,80 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cc/resources/raster_worker_pool_delegate.h"
+
+namespace cc {
+
+RasterWorkerPoolDelegate::RasterWorkerPoolDelegate(
+ RasterWorkerPoolClient* client,
+ RasterWorkerPool** first_raster_worker_pool,
+ RasterWorkerPool** last_raster_worker_pool)
+ : client_(client),
+ raster_worker_pools_(first_raster_worker_pool, last_raster_worker_pool),
+ did_finish_running_tasks_pending_count_(0u),
+ did_finish_running_tasks_required_for_activation_pending_count_(0u) {
+ DCHECK(client_);
+ for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin();
+ it != raster_worker_pools_.end();
+ ++it)
+ (*it)->SetClient(this);
+}
+
+RasterWorkerPoolDelegate::~RasterWorkerPoolDelegate() {}
+
+// static
+scoped_ptr<RasterWorkerPoolDelegate> RasterWorkerPoolDelegate::Create(
+ RasterWorkerPoolClient* client,
+ RasterWorkerPool** first_raster_worker_pool,
+ RasterWorkerPool** last_raster_worker_pool) {
+ return make_scoped_ptr(new RasterWorkerPoolDelegate(
+ client, first_raster_worker_pool, last_raster_worker_pool));
+}
+
+void RasterWorkerPoolDelegate::Shutdown() {
+ for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin();
+ it != raster_worker_pools_.end();
+ ++it)
+ (*it)->Shutdown();
+}
+
+void RasterWorkerPoolDelegate::ScheduleTasks(
+ RasterWorkerPool::RasterTask::Queue* raster_queue) {
+ for (size_t i = 0; i < raster_worker_pools_.size(); ++i)
+ raster_worker_pools_[i]->ScheduleTasks(&raster_queue[i]);
+
+ did_finish_running_tasks_pending_count_ = raster_worker_pools_.size();
+ did_finish_running_tasks_required_for_activation_pending_count_ =
+ raster_worker_pools_.size();
+}
+
+void RasterWorkerPoolDelegate::CheckForCompletedTasks() {
+ for (RasterWorkerPoolVector::iterator it = raster_worker_pools_.begin();
+ it != raster_worker_pools_.end();
+ ++it)
+ (*it)->CheckForCompletedTasks();
+}
+
+bool RasterWorkerPoolDelegate::ShouldForceTasksRequiredForActivationToComplete()
+ const {
+ DCHECK(client_);
+ return client_->ShouldForceTasksRequiredForActivationToComplete();
+}
+
+void RasterWorkerPoolDelegate::DidFinishRunningTasks() {
+ DCHECK_LT(0u, did_finish_running_tasks_pending_count_);
+ if (--did_finish_running_tasks_pending_count_)
+ return;
+ client_->DidFinishRunningTasks();
+}
+
+void RasterWorkerPoolDelegate::DidFinishRunningTasksRequiredForActivation() {
+ DCHECK_LT(0u,
+ did_finish_running_tasks_required_for_activation_pending_count_);
+ if (--did_finish_running_tasks_required_for_activation_pending_count_)
+ return;
+ client_->DidFinishRunningTasksRequiredForActivation();
+}
+
+} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698