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

Unified Diff: cc/worker_pool.h

Issue 12095053: cc: Avoid expensive RenderingStats collection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 7 years, 11 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
« no previous file with comments | « cc/tiled_layer_unittest.cc ('k') | cc/worker_pool.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/worker_pool.h
diff --git a/cc/worker_pool.h b/cc/worker_pool.h
index 58ea57a91f5deafa8862a390c8fbbdcded7993a6..10fe71e4336579ebcfc98da6f7d24669bd2c882f 100644
--- a/cc/worker_pool.h
+++ b/cc/worker_pool.h
@@ -9,6 +9,7 @@
#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"
@@ -21,17 +22,14 @@ class WorkerPoolTask {
public:
virtual ~WorkerPoolTask();
- virtual void Run() = 0;
+ virtual void Run(RenderingStats* rendering_stats) = 0;
void Completed();
- RenderingStats& rendering_stats() { return rendering_stats_; }
-
protected:
WorkerPoolTask(const base::Closure& reply);
base::Closure reply_;
- RenderingStats rendering_stats_;
};
} // namespace internal
@@ -44,8 +42,10 @@ class WorkerPool {
virtual ~WorkerPool();
- static scoped_ptr<WorkerPool> Create(size_t num_threads) {
- return make_scoped_ptr(new WorkerPool(num_threads));
+ static scoped_ptr<WorkerPool> Create(
+ size_t num_threads, bool record_rendering_stats) {
+ return make_scoped_ptr(
+ new WorkerPool(num_threads, record_rendering_stats));
}
// Tells the worker pool to shutdown and returns once all pending tasks have
@@ -66,7 +66,10 @@ class WorkerPool {
protected:
class Worker : public base::Thread {
public:
- Worker(WorkerPool* worker_pool, const std::string name);
+ Worker(
+ WorkerPool* worker_pool,
+ const std::string name,
+ scoped_ptr<RenderingStats> rendering_stats);
virtual ~Worker();
// This must be called before the destructor.
@@ -76,23 +79,26 @@ class WorkerPool {
void PostTask(scoped_ptr<internal::WorkerPoolTask> task);
int num_pending_tasks() const { return pending_tasks_.size(); }
- const RenderingStats& rendering_stats() const { return rendering_stats_; }
+ const RenderingStats* rendering_stats() const {
+ return rendering_stats_.get();
+ }
// Overridden from base::Thread:
virtual void Init() OVERRIDE;
private:
- static void RunTask(internal::WorkerPoolTask* task);
+ static void RunTask(
+ internal::WorkerPoolTask* task, RenderingStats* rendering_stats);
void OnTaskCompleted();
WorkerPool* worker_pool_;
base::WeakPtrFactory<Worker> weak_ptr_factory_;
ScopedPtrDeque<internal::WorkerPoolTask> pending_tasks_;
- RenderingStats rendering_stats_;
+ scoped_ptr<RenderingStats> rendering_stats_;
};
- explicit WorkerPool(size_t num_threads);
+ WorkerPool(size_t num_threads, bool record_rendering_stats);
WorkerPool::Worker* GetWorkerForNextTask();
« no previous file with comments | « cc/tiled_layer_unittest.cc ('k') | cc/worker_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698