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

Unified Diff: cc/worker_pool.h

Issue 12217105: cc: Check for completed raster tasks at interval. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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/worker_pool.h
diff --git a/cc/worker_pool.h b/cc/worker_pool.h
index f47dd70b9981b23af18184c6c3f0ea911b051c12..86ea529cf3ff7553e29d44c74657ca8a82aa5f8f 100644
--- a/cc/worker_pool.h
+++ b/cc/worker_pool.h
@@ -10,7 +10,6 @@
#include "base/basictypes.h"
#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
#include "base/threading/thread.h"
#include "cc/rendering_stats.h"
#include "cc/scoped_ptr_deque.h"
@@ -24,12 +23,16 @@ class WorkerPoolTask {
virtual void Run(RenderingStats* rendering_stats) = 0;
+ bool IsPending();
void Completed();
protected:
WorkerPoolTask(const base::Closure& reply);
base::Closure reply_;
+
+ // Accessed from multiple threads. Set to 1 when task has completed.
+ base::subtle::Atomic32 completed_;
};
} // namespace internal
@@ -54,9 +57,8 @@ class WorkerPool {
// is posted to the thread that called PostTaskAndReply().
void PostTaskAndReply(const Callback& task, const base::Closure& reply);
- // Returns true when worker pool has reached its internal limit for number
- // of pending tasks.
- bool IsBusy();
+ // Check for completed tasks and run reply callbacks.
+ void CheckForCompletedTasks();
// Toggle rendering stats collection.
void SetRecordRenderingStats(bool record_rendering_stats);
@@ -76,6 +78,9 @@ class WorkerPool {
// Posts a task to the worker thread.
void PostTask(scoped_ptr<internal::WorkerPoolTask> task);
+ // Check for completed tasks and run reply callbacks.
+ void CheckForCompletedTasks();
+
int num_pending_tasks() const { return pending_tasks_.size(); }
void set_record_rendering_stats(bool record_rendering_stats) {
record_rendering_stats_ = record_rendering_stats;
@@ -94,7 +99,6 @@ class WorkerPool {
void OnTaskCompleted();
WorkerPool* worker_pool_;
- base::WeakPtrFactory<Worker> weak_ptr_factory_;
ScopedPtrDeque<internal::WorkerPoolTask> pending_tasks_;
scoped_ptr<RenderingStats> rendering_stats_;
bool record_rendering_stats_;

Powered by Google App Engine
This is Rietveld 408576698