Chromium Code Reviews| 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..21c81644216a963e7185023a93b4fde9219ccef0 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,46 +682,23 @@ 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()) { |
|
reveman
2014/08/15 11:54:31
Should we release the raster buffer in this case?
auygun
2014/08/15 12:24:19
Buffer is relased in RasterTaskImpl::CompleteOnOri
reveman
2014/08/15 13:59:34
Acknowledged.
|
| + // 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(); |
|
reveman
2014/08/15 11:54:31
These functions need to be called even if the cond
auygun
2014/08/15 12:24:20
Aren't they called later in CheckForCompletedUploa
reveman
2014/08/15 13:59:34
Acknowledged.
|
| + 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; |
|
reveman
2014/08/15 11:54:31
We still need this code in case the task is no lon
auygun
2014/08/15 12:24:20
Now the task is pushed into raster_tasks_with_pend
reveman
2014/08/15 13:59:34
It seemed a bit awkward to attempt an upload when
auygun
2014/08/15 15:08:23
Ok. I think it's better to not to attempt an uploa
|
| - continue; |
| } |
| - DCHECK(raster_task->HasFinishedRunning()); |
| - |
| resource_provider_->BeginSetPixels(raster_task->resource()->id()); |
| has_performed_uploads_since_last_flush_ = true; |