Index: cc/tiles/tile_manager.cc |
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc |
index 6ecdd23a669d6a820b63735efa8f2be3e585fa9b..4fd8b4fa4f7cac4b5779d7be18e88c1876d70d0a 100644 |
--- a/cc/tiles/tile_manager.cc |
+++ b/cc/tiles/tile_manager.cc |
@@ -23,6 +23,7 @@ |
#include "cc/debug/frame_viewer_instrumentation.h" |
#include "cc/debug/traced_value.h" |
#include "cc/layers/picture_layer_impl.h" |
+#include "cc/raster/rastering_info.h" |
#include "cc/raster/task_category.h" |
#include "cc/raster/tile_task_runner.h" |
#include "cc/tiles/tile.h" |
@@ -42,95 +43,54 @@ DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER( |
class RasterTaskImpl : public Task { |
public: |
- RasterTaskImpl(RasterBufferProvider* raster_buffer_provider, |
- const Resource* resource, |
- scoped_refptr<RasterSource> raster_source, |
- const gfx::Rect& content_rect, |
- const gfx::Rect& invalid_content_rect, |
- float contents_scale, |
- const RasterSource::PlaybackSettings& playback_settings, |
- TileResolution tile_resolution, |
- int layer_id, |
- uint64_t source_prepare_tiles_id, |
- const void* tile, |
- uint64_t new_content_id, |
- uint64_t previous_content_id, |
- uint64_t resource_content_id, |
- int source_frame_number, |
- const base::Callback<void(bool)>& reply, |
+ RasterTaskImpl(scoped_ptr<RasteringInfo> rastering_info, |
Task::Vector* dependencies) |
- : Task(dependencies), |
- raster_buffer_provider_(raster_buffer_provider), |
- resource_(resource), |
- raster_source_(std::move(raster_source)), |
- content_rect_(content_rect), |
- invalid_content_rect_(invalid_content_rect), |
- contents_scale_(contents_scale), |
- playback_settings_(playback_settings), |
- tile_resolution_(tile_resolution), |
- layer_id_(layer_id), |
- source_prepare_tiles_id_(source_prepare_tiles_id), |
- tile_(tile), |
- new_content_id_(new_content_id), |
- previous_content_id_(previous_content_id), |
- resource_content_id_(resource_content_id), |
- source_frame_number_(source_frame_number), |
- reply_(reply) {} |
+ : Task(dependencies), rastering_info_(std::move(rastering_info)) {} |
// Overridden from Task: |
void ScheduleOnOriginThread() override { |
- DCHECK(raster_buffer_provider_); |
- DCHECK(!raster_buffer_); |
- raster_buffer_ = raster_buffer_provider_->AcquireBufferForRaster( |
- resource_, resource_content_id_, previous_content_id_); |
+ DCHECK(rastering_info_->raster_buffer_provider); |
+ DCHECK(!rastering_info_->raster_buffer); |
+ rastering_info_->raster_buffer = |
+ rastering_info_->raster_buffer_provider->AcquireBufferForRaster( |
+ rastering_info_->resource, rastering_info_->resource_content_id, |
+ rastering_info_->previous_content_id); |
} |
void CompleteOnOriginThread() override { |
- DCHECK(raster_buffer_provider_); |
- raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer_)); |
- reply_.Run(!HasFinishedRunning()); |
+ DCHECK(rastering_info_->raster_buffer_provider); |
+ rastering_info_->raster_buffer_provider->ReleaseBufferForRaster( |
+ std::move(rastering_info_->raster_buffer)); |
+ rastering_info_->reply.Run(!HasFinishedRunning()); |
} |
void RunOnWorkerThread() override { |
TRACE_EVENT1("cc", "RasterizerTaskImpl::RunOnWorkerThread", |
- "source_prepare_tiles_id", source_prepare_tiles_id_); |
+ "source_prepare_tiles_id", |
+ rastering_info_->source_prepare_tiles_id); |
- DCHECK(raster_source_.get()); |
- DCHECK(raster_buffer_); |
+ DCHECK(rastering_info_->raster_source.get()); |
+ DCHECK(rastering_info_->raster_buffer); |
frame_viewer_instrumentation::ScopedRasterTask raster_task( |
- tile_, tile_resolution_, source_frame_number_, layer_id_); |
+ rastering_info_->tile, rastering_info_->tile_resolution, |
+ rastering_info_->source_frame_number, rastering_info_->layer_id); |
ScopedRasterTaskTimer timer; |
- timer.SetArea(content_rect_.size().GetArea()); |
+ timer.SetArea(rastering_info_->content_rect.size().GetArea()); |
- DCHECK(raster_source_); |
+ DCHECK(rastering_info_->raster_source); |
- raster_buffer_->Playback(raster_source_.get(), content_rect_, |
- invalid_content_rect_, new_content_id_, |
- contents_scale_, playback_settings_); |
+ rastering_info_->raster_buffer->Playback( |
+ rastering_info_->raster_source.get(), rastering_info_->content_rect, |
+ rastering_info_->invalid_content_rect, rastering_info_->new_content_id, |
+ rastering_info_->contents_scale, rastering_info_->playback_settings); |
} |
protected: |
- ~RasterTaskImpl() override { DCHECK(!raster_buffer_); } |
+ ~RasterTaskImpl() override { DCHECK(!rastering_info_->raster_buffer); } |
private: |
- RasterBufferProvider* raster_buffer_provider_; |
- const Resource* resource_; |
- scoped_refptr<RasterSource> raster_source_; |
- gfx::Rect content_rect_; |
- gfx::Rect invalid_content_rect_; |
- float contents_scale_; |
- RasterSource::PlaybackSettings playback_settings_; |
- TileResolution tile_resolution_; |
- int layer_id_; |
- uint64_t source_prepare_tiles_id_; |
- const void* tile_; |
- uint64_t new_content_id_; |
- uint64_t previous_content_id_; |
- uint64_t resource_content_id_; |
- int source_frame_number_; |
- const base::Callback<void(bool)> reply_; |
- scoped_ptr<RasterBuffer> raster_buffer_; |
+ scoped_ptr<RasteringInfo> rastering_info_; |
DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl); |
}; |
@@ -879,7 +839,7 @@ scoped_refptr<Task> TileManager::CreateRasterTask( |
it = images.erase(it); |
} |
- return make_scoped_refptr(new RasterTaskImpl( |
+ scoped_ptr<RasteringInfo> rastering_info = RasteringInfo::Create( |
tile_task_runner_, resource, prioritized_tile.raster_source(), |
tile->content_rect(), tile->invalidated_content_rect(), |
tile->contents_scale(), playback_settings, |
@@ -887,8 +847,9 @@ scoped_refptr<Task> TileManager::CreateRasterTask( |
prepare_tiles_count_, static_cast<const void*>(tile), tile->id(), |
tile->invalidated_id(), resource_content_id, tile->source_frame_number(), |
base::Bind(&TileManager::OnRasterTaskCompleted, base::Unretained(this), |
- tile->id(), resource), |
- &decode_tasks)); |
+ tile->id(), resource)); |
+ return make_scoped_refptr( |
+ new RasterTaskImpl(std::move(rastering_info), &decode_tasks)); |
} |
void TileManager::OnRasterTaskCompleted( |