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

Unified Diff: cc/trees/blocking_task_runner.cc

Issue 485043003: cc: Use correct message loop proxy in BlockingTaskRunner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: thread_id_ is back + other comments. Created 6 years, 3 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/trees/blocking_task_runner.cc
diff --git a/cc/trees/blocking_task_runner.cc b/cc/trees/blocking_task_runner.cc
index 2586375436d3684e1910db3ee5dee918b53a6107..1111e9bf4b72fd842444b5a939cd3115dc9c0aa0 100644
--- a/cc/trees/blocking_task_runner.cc
+++ b/cc/trees/blocking_task_runner.cc
@@ -6,49 +6,16 @@
#include <utility>
+#include "base/callback.h"
#include "base/logging.h"
-#include "base/memory/singleton.h"
#include "base/message_loop/message_loop_proxy.h"
namespace cc {
-struct TaskRunnerPairs {
- static TaskRunnerPairs* GetInstance() {
- return Singleton<TaskRunnerPairs>::get();
- }
-
- base::Lock lock;
- std::vector<scoped_refptr<BlockingTaskRunner> > runners;
-
- private:
- friend struct DefaultSingletonTraits<TaskRunnerPairs>;
-};
-
// static
-scoped_refptr<BlockingTaskRunner> BlockingTaskRunner::current() {
- TaskRunnerPairs* task_runners = TaskRunnerPairs::GetInstance();
- base::PlatformThreadId thread_id = base::PlatformThread::CurrentId();
-
- base::AutoLock lock(task_runners->lock);
-
- scoped_refptr<BlockingTaskRunner> current_task_runner;
-
- for (size_t i = 0; i < task_runners->runners.size(); ++i) {
- if (task_runners->runners[i]->thread_id_ == thread_id) {
- current_task_runner = task_runners->runners[i];
- } else if (task_runners->runners[i]->HasOneRef()) {
- task_runners->runners.erase(task_runners->runners.begin() + i);
- i--;
- }
- }
-
- if (current_task_runner.get())
- return current_task_runner;
-
- scoped_refptr<BlockingTaskRunner> runner =
- new BlockingTaskRunner(base::MessageLoopProxy::current());
- task_runners->runners.push_back(runner);
- return runner;
+scoped_ptr<BlockingTaskRunner> BlockingTaskRunner::Create(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
+ return make_scoped_ptr(new BlockingTaskRunner(task_runner));
}
BlockingTaskRunner::BlockingTaskRunner(
@@ -94,8 +61,9 @@ void BlockingTaskRunner::SetCapture(bool capture) {
tasks[i].Run();
}
-BlockingTaskRunner::CapturePostTasks::CapturePostTasks()
- : blocking_runner_(BlockingTaskRunner::current()) {
+BlockingTaskRunner::CapturePostTasks::CapturePostTasks(
+ BlockingTaskRunner* blocking_runner)
+ : blocking_runner_(blocking_runner) {
blocking_runner_->SetCapture(true);
}

Powered by Google App Engine
This is Rietveld 408576698