| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |