Index: cc/resources/pixel_buffer_raster_worker_pool.cc |
diff --git a/cc/resources/pixel_buffer_raster_worker_pool.cc b/cc/resources/pixel_buffer_raster_worker_pool.cc |
index d7554736942a66ee541c065c99320385c42d0234..e15bfd57e7cdac810b6b74f3f2980d5a84a3700d 100644 |
--- a/cc/resources/pixel_buffer_raster_worker_pool.cc |
+++ b/cc/resources/pixel_buffer_raster_worker_pool.cc |
@@ -261,17 +261,16 @@ void PixelBufferRasterWorkerPool::CheckForCompletedTasks() { |
completed_raster_tasks_.clear(); |
} |
-SkCanvas* PixelBufferRasterWorkerPool::AcquireCanvasForRaster( |
+RasterBuffer* PixelBufferRasterWorkerPool::AcquireBufferForRaster( |
RasterTask* task) { |
DCHECK(std::find_if(raster_task_states_.begin(), |
raster_task_states_.end(), |
RasterTaskState::TaskComparator(task)) != |
raster_task_states_.end()); |
- resource_provider_->AcquirePixelRasterBuffer(task->resource()->id()); |
- return resource_provider_->MapPixelRasterBuffer(task->resource()->id()); |
+ return resource_provider_->AcquirePixelRasterBuffer(task->resource()->id()); |
} |
-void PixelBufferRasterWorkerPool::ReleaseCanvasForRaster(RasterTask* task) { |
+void PixelBufferRasterWorkerPool::ReleaseBufferForRaster(RasterTask* task) { |
DCHECK(std::find_if(raster_task_states_.begin(), |
raster_task_states_.end(), |
RasterTaskState::TaskComparator(task)) != |
@@ -683,48 +682,25 @@ void PixelBufferRasterWorkerPool::CheckForCompletedRasterizerTasks() { |
RasterTaskState& state = *state_it; |
DCHECK_EQ(RasterTaskState::SCHEDULED, state.type); |
- // Balanced with MapPixelRasterBuffer() call in AcquireCanvasForRaster(). |
- bool content_has_changed = resource_provider_->UnmapPixelRasterBuffer( |
- raster_task->resource()->id()); |
- |
- // |content_has_changed| can be false as result of task being canceled or |
- // task implementation deciding not to modify bitmap (ie. analysis of raster |
- // commands detected content as a solid color). |
- if (!content_has_changed) { |
- raster_task->WillComplete(); |
- raster_task->CompleteOnOriginThread(this); |
- raster_task->DidComplete(); |
- |
- if (!raster_task->HasFinishedRunning()) { |
- // When priorites change, a raster task can be canceled as a result of |
- // no longer being of high enough priority to fit in our throttled |
- // raster task budget. The task has not yet completed in this case. |
- RasterTaskQueue::Item::Vector::const_iterator item_it = |
- std::find_if(raster_tasks_.items.begin(), |
- raster_tasks_.items.end(), |
- RasterTaskQueue::Item::TaskComparator(raster_task)); |
- if (item_it != raster_tasks_.items.end()) { |
- state.type = RasterTaskState::UNSCHEDULED; |
- continue; |
- } |
+ if (!raster_task->HasFinishedRunning()) { |
+ // When priorites change, a raster task can be canceled as a result of |
+ // no longer being of high enough priority to fit in our throttled |
+ // raster task budget. The task has not yet completed in this case. |
+ RasterTaskQueue::Item::Vector::const_iterator item_it = |
+ std::find_if(raster_tasks_.items.begin(), |
+ raster_tasks_.items.end(), |
+ RasterTaskQueue::Item::TaskComparator(raster_task)); |
+ if (item_it != raster_tasks_.items.end()) { |
+ raster_task->WillComplete(); |
+ raster_task->CompleteOnOriginThread(this); |
+ raster_task->DidComplete(); |
+ state.type = RasterTaskState::UNSCHEDULED; |
+ continue; |
} |
- |
- DCHECK(std::find(completed_raster_tasks_.begin(), |
- completed_raster_tasks_.end(), |
- raster_task) == completed_raster_tasks_.end()); |
- completed_raster_tasks_.push_back(raster_task); |
- state.type = RasterTaskState::COMPLETED; |
- DCHECK_LE(static_cast<size_t>(state.required_for_activation), |
- raster_tasks_required_for_activation_count_); |
- raster_tasks_required_for_activation_count_ -= |
- state.required_for_activation; |
- continue; |
} |
- DCHECK(raster_task->HasFinishedRunning()); |
- |
- resource_provider_->BeginSetPixels(raster_task->resource()->id()); |
- has_performed_uploads_since_last_flush_ = true; |
+ if (resource_provider_->TryBeginSetPixels(raster_task->resource()->id())) |
+ has_performed_uploads_since_last_flush_ = true; |
bytes_pending_upload_ += raster_task->resource()->bytes(); |
raster_tasks_with_pending_upload_.push_back(raster_task); |