OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/tiles/tile_manager.h" | 5 #include "cc/tiles/tile_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 state->SetInteger("completed_count", | 301 state->SetInteger("completed_count", |
302 base::saturated_cast<int>(stats.completed_count)); | 302 base::saturated_cast<int>(stats.completed_count)); |
303 state->SetInteger("canceled_count", | 303 state->SetInteger("canceled_count", |
304 base::saturated_cast<int>(stats.canceled_count)); | 304 base::saturated_cast<int>(stats.canceled_count)); |
305 return std::move(state); | 305 return std::move(state); |
306 } | 306 } |
307 | 307 |
308 TileManager::TileManager(TileManagerClient* client, | 308 TileManager::TileManager(TileManagerClient* client, |
309 base::SequencedTaskRunner* task_runner, | 309 base::SequencedTaskRunner* task_runner, |
310 size_t scheduled_raster_task_limit, | 310 size_t scheduled_raster_task_limit, |
311 bool use_partial_raster, | 311 bool use_partial_raster) |
312 int max_preraster_distance_in_screen_pixels) | |
313 : client_(client), | 312 : client_(client), |
314 task_runner_(task_runner), | 313 task_runner_(task_runner), |
315 resource_pool_(nullptr), | 314 resource_pool_(nullptr), |
316 tile_task_manager_(nullptr), | 315 tile_task_manager_(nullptr), |
317 scheduled_raster_task_limit_(scheduled_raster_task_limit), | 316 scheduled_raster_task_limit_(scheduled_raster_task_limit), |
318 use_partial_raster_(use_partial_raster), | 317 use_partial_raster_(use_partial_raster), |
319 use_gpu_rasterization_(false), | 318 use_gpu_rasterization_(false), |
320 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), | 319 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), |
321 did_check_for_completed_tasks_since_last_schedule_tasks_(true), | 320 did_check_for_completed_tasks_since_last_schedule_tasks_(true), |
322 did_oom_on_last_assign_(false), | 321 did_oom_on_last_assign_(false), |
323 more_tiles_need_prepare_check_notifier_( | 322 more_tiles_need_prepare_check_notifier_( |
324 task_runner_, | 323 task_runner_, |
325 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared, | 324 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared, |
326 base::Unretained(this))), | 325 base::Unretained(this))), |
327 signals_check_notifier_(task_runner_, | 326 signals_check_notifier_(task_runner_, |
328 base::Bind(&TileManager::CheckAndIssueSignals, | 327 base::Bind(&TileManager::CheckAndIssueSignals, |
329 base::Unretained(this))), | 328 base::Unretained(this))), |
330 has_scheduled_tile_tasks_(false), | 329 has_scheduled_tile_tasks_(false), |
331 prepare_tiles_count_(0u), | 330 prepare_tiles_count_(0u), |
332 next_tile_id_(0u), | 331 next_tile_id_(0u), |
333 max_preraster_distance_in_screen_pixels_( | |
334 max_preraster_distance_in_screen_pixels), | |
335 task_set_finished_weak_ptr_factory_(this) {} | 332 task_set_finished_weak_ptr_factory_(this) {} |
336 | 333 |
337 TileManager::~TileManager() { | 334 TileManager::~TileManager() { |
338 FinishTasksAndCleanUp(); | 335 FinishTasksAndCleanUp(); |
339 } | 336 } |
340 | 337 |
341 void TileManager::FinishTasksAndCleanUp() { | 338 void TileManager::FinishTasksAndCleanUp() { |
342 if (!tile_task_manager_) | 339 if (!tile_task_manager_) |
343 return; | 340 return; |
344 | 341 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 tile->draw_info().set_was_ever_ready_to_draw(); | 646 tile->draw_info().set_was_ever_ready_to_draw(); |
650 if (!tile_is_needed_now) | 647 if (!tile_is_needed_now) |
651 tile->draw_info().set_was_a_prepaint_tile(); | 648 tile->draw_info().set_was_a_prepaint_tile(); |
652 client_->NotifyTileStateChanged(tile); | 649 client_->NotifyTileStateChanged(tile); |
653 continue; | 650 continue; |
654 } | 651 } |
655 } | 652 } |
656 | 653 |
657 // Prepaint tiles that are far away are only processed for images. | 654 // Prepaint tiles that are far away are only processed for images. |
658 if (!tile->required_for_activation() && !tile->required_for_draw() && | 655 if (!tile->required_for_activation() && !tile->required_for_draw() && |
659 priority.distance_to_visible > | 656 prioritized_tile.is_process_for_images_only()) { |
660 max_preraster_distance_in_screen_pixels_) { | |
661 work_to_schedule.tiles_to_process_for_images.push_back(prioritized_tile); | 657 work_to_schedule.tiles_to_process_for_images.push_back(prioritized_tile); |
662 continue; | 658 continue; |
663 } | 659 } |
664 | 660 |
665 // We won't be able to schedule this tile, so break out early. | 661 // We won't be able to schedule this tile, so break out early. |
666 if (work_to_schedule.tiles_to_raster.size() >= | 662 if (work_to_schedule.tiles_to_raster.size() >= |
667 scheduled_raster_task_limit_) { | 663 scheduled_raster_task_limit_) { |
668 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; | 664 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; |
669 break; | 665 break; |
670 } | 666 } |
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1334 all_tile_tasks_completed = false; | 1330 all_tile_tasks_completed = false; |
1335 did_notify_all_tile_tasks_completed = false; | 1331 did_notify_all_tile_tasks_completed = false; |
1336 } | 1332 } |
1337 | 1333 |
1338 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default; | 1334 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default; |
1339 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule( | 1335 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule( |
1340 PrioritizedWorkToSchedule&& other) = default; | 1336 PrioritizedWorkToSchedule&& other) = default; |
1341 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default; | 1337 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default; |
1342 | 1338 |
1343 } // namespace cc | 1339 } // namespace cc |
OLD | NEW |