| 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 |