Chromium Code Reviews| Index: cc/tiles/tile_manager.h |
| diff --git a/cc/tiles/tile_manager.h b/cc/tiles/tile_manager.h |
| index abffc7cb5998794580de7a4956646a0ea6e40ff3..e9ca50867a3e03a03ed12ffe80cf39410885ed9b 100644 |
| --- a/cc/tiles/tile_manager.h |
| +++ b/cc/tiles/tile_manager.h |
| @@ -86,11 +86,19 @@ struct RasterTaskCompletionStats { |
| scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| RasterTaskCompletionStatsAsValue(const RasterTaskCompletionStats& stats); |
| +// kNumberOfTaskSets must be greater or equal to the number of values in |
| +// TileManager::NamedTaskSet. |
| +// TODO(reveman): Use template specialization to make it easy for client code to |
| +// check at compile time that the number of supported task sets is correct. |
| +static const size_t kNumberOfTaskSets = 3; |
| +using TaskSet = size_t; |
| +using TaskSetCollection = std::bitset<kNumberOfTaskSets>; |
|
reveman
2015/11/26 00:18:30
Can we get rid of all this and just build the corr
ericrk
2015/11/30 23:52:16
this is more used for tracking which task sets are
reveman
2015/12/02 05:22:54
I'm thinking that we just get rid of all this task
|
| + |
| // This class manages tiles, deciding which should get rasterized and which |
| // should no longer have any memory assigned to them. Tile objects are "owned" |
| // by layers; they automatically register with the manager when they are |
| // created, and unregister from the manager when they are deleted. |
| -class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| +class CC_EXPORT TileManager { |
| public: |
| enum NamedTaskSet { |
| REQUIRED_FOR_ACTIVATION, |
| @@ -109,7 +117,7 @@ class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| base::SequencedTaskRunner* task_runner, |
| size_t scheduled_raster_task_limit, |
| bool use_partial_raster); |
| - ~TileManager() override; |
| + virtual ~TileManager(); |
| // Assigns tile memory and schedules work to prepare tiles for drawing. |
| // - Runs client_->NotifyReadyToActivate() when all tiles required for |
| @@ -217,9 +225,6 @@ class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| virtual void Release(Tile* tile); |
| Tile::Id GetUniqueTileId() { return ++next_tile_id_; } |
| - // Overriden from TileTaskRunnerClient: |
| - void DidFinishRunningTileTasks(TaskSet task_set) override; |
| - |
| typedef std::vector<PrioritizedTile> PrioritizedTileVector; |
| typedef std::set<Tile*> TileSet; |
| @@ -288,6 +293,16 @@ class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| ResourceFormat DetermineResourceFormat(const Tile* tile) const; |
| bool DetermineResourceRequiresSwizzle(const Tile* tile) const; |
| + void DidFinishRunningTileTasks(TaskSet task_set); |
| + |
| + void BuildTaskGraph( |
| + const PrioritizedTileVector& tiles_that_need_to_be_rasterized, |
| + TaskGraph* graph, |
| + scoped_refptr<TileTask>(&new_task_set_finished_tasks)[kNumberOfTaskSets]); |
| + |
| + scoped_refptr<base::trace_event::ConvertableToTraceFormat> |
| + ScheduledTasksStateAsValue() const; |
| + |
| TileManagerClient* client_; |
| scoped_refptr<base::SequencedTaskRunner> task_runner_; |
| ResourcePool* resource_pool_; |
| @@ -311,10 +326,8 @@ class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| std::vector<Tile*> released_tiles_; |
| - // Queue used when scheduling raster tasks. |
| - TileTaskQueue raster_queue_; |
| - |
| - std::vector<scoped_refptr<RasterTask>> orphan_raster_tasks_; |
| + std::vector<scoped_refptr<TileTask>> orphan_tasks_; |
| + TaskSetCollection tasks_pending_; |
| UniqueNotifier more_tiles_need_prepare_check_notifier_; |
| @@ -338,6 +351,8 @@ class CC_EXPORT TileManager : public TileTaskRunnerClient { |
| uint64_t prepare_tiles_count_; |
| uint64_t next_tile_id_; |
| + base::WeakPtrFactory<TileManager> task_set_finished_weak_ptr_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(TileManager); |
| }; |