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/image_copy_raster_worker_pool.h" | 5 #include "cc/resources/image_copy_raster_worker_pool.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/debug/trace_event_argument.h" | 10 #include "base/debug/trace_event_argument.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 task->CompleteOnOriginThread(this); | 159 task->CompleteOnOriginThread(this); |
160 task->DidComplete(); | 160 task->DidComplete(); |
161 | 161 |
162 task->RunReplyOnOriginThread(); | 162 task->RunReplyOnOriginThread(); |
163 } | 163 } |
164 completed_tasks_.clear(); | 164 completed_tasks_.clear(); |
165 | 165 |
166 FlushCopies(); | 166 FlushCopies(); |
167 } | 167 } |
168 | 168 |
169 SkCanvas* ImageCopyRasterWorkerPool::AcquireCanvasForRaster(RasterTask* task) { | 169 RasterBuffer* ImageCopyRasterWorkerPool::AcquireBufferForRaster( |
| 170 RasterTask* task) { |
170 DCHECK_EQ(task->resource()->format(), resource_pool_->resource_format()); | 171 DCHECK_EQ(task->resource()->format(), resource_pool_->resource_format()); |
171 scoped_ptr<ScopedResource> resource( | 172 scoped_ptr<ScopedResource> resource( |
172 resource_pool_->AcquireResource(task->resource()->size())); | 173 resource_pool_->AcquireResource(task->resource()->size())); |
173 SkCanvas* canvas = resource_provider_->MapImageRasterBuffer(resource->id()); | 174 RasterBuffer* raster_buffer = |
| 175 resource_provider_->AcquireImageRasterBuffer(resource->id()); |
174 DCHECK(std::find_if(raster_task_states_.begin(), | 176 DCHECK(std::find_if(raster_task_states_.begin(), |
175 raster_task_states_.end(), | 177 raster_task_states_.end(), |
176 RasterTaskState::TaskComparator(task)) == | 178 RasterTaskState::TaskComparator(task)) == |
177 raster_task_states_.end()); | 179 raster_task_states_.end()); |
178 raster_task_states_.push_back(RasterTaskState(task, resource.release())); | 180 raster_task_states_.push_back(RasterTaskState(task, resource.release())); |
179 return canvas; | 181 return raster_buffer; |
180 } | 182 } |
181 | 183 |
182 void ImageCopyRasterWorkerPool::ReleaseCanvasForRaster(RasterTask* task) { | 184 void ImageCopyRasterWorkerPool::ReleaseBufferForRaster(RasterTask* task) { |
183 RasterTaskState::Vector::iterator it = | 185 RasterTaskState::Vector::iterator it = |
184 std::find_if(raster_task_states_.begin(), | 186 std::find_if(raster_task_states_.begin(), |
185 raster_task_states_.end(), | 187 raster_task_states_.end(), |
186 RasterTaskState::TaskComparator(task)); | 188 RasterTaskState::TaskComparator(task)); |
187 DCHECK(it != raster_task_states_.end()); | 189 DCHECK(it != raster_task_states_.end()); |
188 scoped_ptr<ScopedResource> resource(it->resource); | 190 scoped_ptr<ScopedResource> resource(it->resource); |
189 std::swap(*it, raster_task_states_.back()); | 191 std::swap(*it, raster_task_states_.back()); |
190 raster_task_states_.pop_back(); | 192 raster_task_states_.pop_back(); |
191 | 193 |
192 bool content_has_changed = | 194 bool content_has_changed = |
193 resource_provider_->UnmapImageRasterBuffer(resource->id()); | 195 resource_provider_->ReleaseImageRasterBuffer(resource->id()); |
194 | 196 |
195 // |content_has_changed| can be false as result of task being canceled or | 197 // |content_has_changed| can be false as result of task being canceled or |
196 // task implementation deciding not to modify bitmap (ie. analysis of raster | 198 // task implementation deciding not to modify bitmap (ie. analysis of raster |
197 // commands detected content as a solid color). | 199 // commands detected content as a solid color). |
198 if (content_has_changed) { | 200 if (content_has_changed) { |
199 resource_provider_->CopyResource(resource->id(), task->resource()->id()); | 201 resource_provider_->CopyResource(resource->id(), task->resource()->id()); |
200 has_performed_copy_since_last_flush_ = true; | 202 has_performed_copy_since_last_flush_ = true; |
201 } | 203 } |
202 | 204 |
203 resource_pool_->ReleaseResource(resource.Pass()); | 205 resource_pool_->ReleaseResource(resource.Pass()); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 resource_pool_->total_memory_usage_bytes()); | 255 resource_pool_->total_memory_usage_bytes()); |
254 staging_state->SetInteger("pending_copy_count", | 256 staging_state->SetInteger("pending_copy_count", |
255 resource_pool_->total_resource_count() - | 257 resource_pool_->total_resource_count() - |
256 resource_pool_->acquired_resource_count()); | 258 resource_pool_->acquired_resource_count()); |
257 staging_state->SetInteger("bytes_pending_copy", | 259 staging_state->SetInteger("bytes_pending_copy", |
258 resource_pool_->total_memory_usage_bytes() - | 260 resource_pool_->total_memory_usage_bytes() - |
259 resource_pool_->acquired_memory_usage_bytes()); | 261 resource_pool_->acquired_memory_usage_bytes()); |
260 } | 262 } |
261 | 263 |
262 } // namespace cc | 264 } // namespace cc |
OLD | NEW |