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

Side by Side 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: Fix tests. 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/blocking_task_runner.h" 5 #include "cc/trees/blocking_task_runner.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 bool BlockingTaskRunner::PostTask(const tracked_objects::Location& from_here, 67 bool BlockingTaskRunner::PostTask(const tracked_objects::Location& from_here,
68 const base::Closure& task) { 68 const base::Closure& task) {
69 base::AutoLock lock(lock_); 69 base::AutoLock lock(lock_);
70 DCHECK(task_runner_.get() || capture_); 70 DCHECK(task_runner_.get() || capture_);
71 if (!capture_) 71 if (!capture_)
72 return task_runner_->PostTask(from_here, task); 72 return task_runner_->PostTask(from_here, task);
73 captured_tasks_.push_back(task); 73 captured_tasks_.push_back(task);
74 return true; 74 return true;
75 } 75 }
76 76
77 void BlockingTaskRunner::SetTaskRunner(
78 scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
79 base::AutoLock lock(lock_);
80 DCHECK(!capture_);
81 task_runner_ = task_runner;
82 }
83
77 void BlockingTaskRunner::SetCapture(bool capture) { 84 void BlockingTaskRunner::SetCapture(bool capture) {
78 DCHECK(BelongsToCurrentThread()); 85 DCHECK(BelongsToCurrentThread());
79 86
80 std::vector<base::Closure> tasks; 87 std::vector<base::Closure> tasks;
81 88
82 { 89 {
83 base::AutoLock lock(lock_); 90 base::AutoLock lock(lock_);
84 capture_ += capture ? 1 : -1; 91 capture_ += capture ? 1 : -1;
85 DCHECK_GE(capture_, 0); 92 DCHECK_GE(capture_, 0);
86 93
(...skipping 10 matching lines...) Expand all
97 BlockingTaskRunner::CapturePostTasks::CapturePostTasks() 104 BlockingTaskRunner::CapturePostTasks::CapturePostTasks()
98 : blocking_runner_(BlockingTaskRunner::current()) { 105 : blocking_runner_(BlockingTaskRunner::current()) {
99 blocking_runner_->SetCapture(true); 106 blocking_runner_->SetCapture(true);
100 } 107 }
101 108
102 BlockingTaskRunner::CapturePostTasks::~CapturePostTasks() { 109 BlockingTaskRunner::CapturePostTasks::~CapturePostTasks() {
103 blocking_runner_->SetCapture(false); 110 blocking_runner_->SetCapture(false);
104 } 111 }
105 112
106 } // namespace cc 113 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698