| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/resources/task_graph_runner.h" | 5 #include "cc/resources/task_graph_runner.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/threading/thread_restrictions.h" | 10 #include "base/threading/thread_restrictions.h" |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 } | 283 } |
| 284 } | 284 } |
| 285 | 285 |
| 286 void TaskGraphRunner::WaitForTasksToFinishRunning(NamespaceToken token) { | 286 void TaskGraphRunner::WaitForTasksToFinishRunning(NamespaceToken token) { |
| 287 TRACE_EVENT0("cc", "TaskGraphRunner::WaitForTasksToFinishRunning"); | 287 TRACE_EVENT0("cc", "TaskGraphRunner::WaitForTasksToFinishRunning"); |
| 288 | 288 |
| 289 DCHECK(token.IsValid()); | 289 DCHECK(token.IsValid()); |
| 290 | 290 |
| 291 { | 291 { |
| 292 base::AutoLock lock(lock_); | 292 base::AutoLock lock(lock_); |
| 293 base::ThreadRestrictions::ScopedAllowWait allow_wait; |
| 293 | 294 |
| 294 TaskNamespaceMap::const_iterator it = namespaces_.find(token.id_); | 295 TaskNamespaceMap::const_iterator it = namespaces_.find(token.id_); |
| 295 if (it == namespaces_.end()) | 296 if (it == namespaces_.end()) |
| 296 return; | 297 return; |
| 297 | 298 |
| 298 const TaskNamespace& task_namespace = it->second; | 299 const TaskNamespace& task_namespace = it->second; |
| 299 | 300 |
| 300 while (!HasFinishedRunningTasksInNamespace(&task_namespace)) | 301 while (!HasFinishedRunningTasksInNamespace(&task_namespace)) |
| 301 has_namespaces_with_finished_running_tasks_cv_.Wait(); | 302 has_namespaces_with_finished_running_tasks_cv_.Wait(); |
| 302 | 303 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 | 472 |
| 472 // Finally add task to |completed_tasks_|. | 473 // Finally add task to |completed_tasks_|. |
| 473 task_namespace->completed_tasks.push_back(task); | 474 task_namespace->completed_tasks.push_back(task); |
| 474 | 475 |
| 475 // If namespace has finished running all tasks, wake up origin thread. | 476 // If namespace has finished running all tasks, wake up origin thread. |
| 476 if (HasFinishedRunningTasksInNamespace(task_namespace)) | 477 if (HasFinishedRunningTasksInNamespace(task_namespace)) |
| 477 has_namespaces_with_finished_running_tasks_cv_.Signal(); | 478 has_namespaces_with_finished_running_tasks_cv_.Signal(); |
| 478 } | 479 } |
| 479 | 480 |
| 480 } // namespace cc | 481 } // namespace cc |
| OLD | NEW |