| 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/resources/image_raster_worker_pool.h" | 5 #include "cc/resources/image_raster_worker_pool.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "cc/resources/resource.h" | 8 #include "cc/resources/resource.h" |
| 9 #include "third_party/skia/include/core/SkDevice.h" | 9 #include "third_party/skia/include/core/SkDevice.h" |
| 10 | 10 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 RasterWorkerPool::SetRasterTasks(queue); | 72 RasterWorkerPool::SetRasterTasks(queue); |
| 73 | 73 |
| 74 RasterTaskGraph graph; | 74 RasterTaskGraph graph; |
| 75 for (RasterTaskVector::const_iterator it = raster_tasks().begin(); | 75 for (RasterTaskVector::const_iterator it = raster_tasks().begin(); |
| 76 it != raster_tasks().end(); ++it) { | 76 it != raster_tasks().end(); ++it) { |
| 77 internal::RasterWorkerPoolTask* task = it->get(); | 77 internal::RasterWorkerPoolTask* task = it->get(); |
| 78 | 78 |
| 79 TaskMap::iterator image_it = image_tasks_.find(task); | 79 TaskMap::iterator image_it = image_tasks_.find(task); |
| 80 if (image_it != image_tasks_.end()) { | 80 if (image_it != image_tasks_.end()) { |
| 81 internal::WorkerPoolTask* image_task = image_it->second.get(); | 81 internal::WorkerPoolTask* image_task = image_it->second.get(); |
| 82 graph.InsertRasterTask(image_task, task->dependencies()); | 82 graph.InsertRasterTask(image_task, |
| 83 task->dependencies(), |
| 84 IsRasterTaskRequiredForActivation(task)); |
| 83 continue; | 85 continue; |
| 84 } | 86 } |
| 85 | 87 |
| 86 // Acquire image for resource. | 88 // Acquire image for resource. |
| 87 resource_provider()->AcquireImage(task->resource()->id()); | 89 resource_provider()->AcquireImage(task->resource()->id()); |
| 88 | 90 |
| 89 // Map image for raster. | 91 // Map image for raster. |
| 90 uint8* buffer = resource_provider()->MapImage(task->resource()->id()); | 92 uint8* buffer = resource_provider()->MapImage(task->resource()->id()); |
| 91 int stride = resource_provider()->GetImageStride(task->resource()->id()); | 93 int stride = resource_provider()->GetImageStride(task->resource()->id()); |
| 92 | 94 |
| 93 scoped_refptr<internal::WorkerPoolTask> new_image_task( | 95 scoped_refptr<internal::WorkerPoolTask> new_image_task( |
| 94 new ImageWorkerPoolTaskImpl( | 96 new ImageWorkerPoolTaskImpl( |
| 95 task, | 97 task, |
| 96 buffer, | 98 buffer, |
| 97 stride, | 99 stride, |
| 98 base::Bind(&ImageRasterWorkerPool::OnRasterTaskCompleted, | 100 base::Bind(&ImageRasterWorkerPool::OnRasterTaskCompleted, |
| 99 base::Unretained(this), | 101 base::Unretained(this), |
| 100 make_scoped_refptr(task)))); | 102 make_scoped_refptr(task)))); |
| 101 image_tasks_[task] = new_image_task; | 103 image_tasks_[task] = new_image_task; |
| 102 graph.InsertRasterTask(new_image_task.get(), task->dependencies()); | 104 graph.InsertRasterTask(new_image_task.get(), |
| 105 task->dependencies(), |
| 106 IsRasterTaskRequiredForActivation(task)); |
| 103 } | 107 } |
| 104 | 108 |
| 105 SetRasterTaskGraph(&graph); | 109 SetRasterTaskGraph(&graph); |
| 106 } | 110 } |
| 107 | 111 |
| 112 void ImageRasterWorkerPool::OnRasterTasksFinished() { |
| 113 client()->DidFinishedRunningTasks(); |
| 114 } |
| 115 |
| 116 void ImageRasterWorkerPool::OnRasterTasksRequiredForActivationFinished() { |
| 117 client()->DidFinishedRunningTasksRequiredForActivation(); |
| 118 } |
| 119 |
| 108 void ImageRasterWorkerPool::OnRasterTaskCompleted( | 120 void ImageRasterWorkerPool::OnRasterTaskCompleted( |
| 109 scoped_refptr<internal::RasterWorkerPoolTask> task, | 121 scoped_refptr<internal::RasterWorkerPoolTask> task, |
| 110 bool was_canceled) { | 122 bool was_canceled) { |
| 111 TRACE_EVENT1("cc", "ImageRasterWorkerPool::OnRasterTaskCompleted", | 123 TRACE_EVENT1("cc", "ImageRasterWorkerPool::OnRasterTaskCompleted", |
| 112 "was_canceled", was_canceled); | 124 "was_canceled", was_canceled); |
| 113 | 125 |
| 114 DCHECK(image_tasks_.find(task.get()) != image_tasks_.end()); | 126 DCHECK(image_tasks_.find(task.get()) != image_tasks_.end()); |
| 115 | 127 |
| 116 // Balanced with MapImage() call in ScheduleTasks(). | 128 // Balanced with MapImage() call in ScheduleTasks(). |
| 117 resource_provider()->UnmapImage(task->resource()->id()); | 129 resource_provider()->UnmapImage(task->resource()->id()); |
| 118 | 130 |
| 119 // Bind image to resource. | 131 // Bind image to resource. |
| 120 resource_provider()->BindImage(task->resource()->id()); | 132 resource_provider()->BindImage(task->resource()->id()); |
| 121 | 133 |
| 122 task->DidRun(was_canceled); | 134 task->DidRun(was_canceled); |
| 123 task->DidComplete(); | 135 task->DidComplete(); |
| 124 task->DispatchCompletionCallback(); | 136 task->DispatchCompletionCallback(); |
| 125 | 137 |
| 126 image_tasks_.erase(task.get()); | 138 image_tasks_.erase(task.get()); |
| 127 } | 139 } |
| 128 | 140 |
| 129 } // namespace cc | 141 } // namespace cc |
| OLD | NEW |