Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1911)

Unified Diff: cc/resources/tile_manager.cc

Issue 671653005: SetNeedsRedraw directly when updating a visible tile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pinchblurmerge-test: nits Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/resources/tile_manager.cc
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
index 86874e75bcb7345dd08b953b0d304f01d77afa38..a48a6d8bb013249c38d8ac77e7d2d3a8ad6536cd 100644
--- a/cc/resources/tile_manager.cc
+++ b/cc/resources/tile_manager.cc
@@ -239,9 +239,9 @@ TileManager::TileManager(
scheduled_raster_task_limit_(scheduled_raster_task_limit),
all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
rendering_stats_instrumentation_(rendering_stats_instrumentation),
- did_initialize_visible_tile_(false),
did_check_for_completed_tasks_since_last_schedule_tasks_(true),
did_oom_on_last_assign_(false),
+ has_active_visible_tile_scheduled_(false),
ready_to_activate_check_notifier_(
task_runner_.get(),
base::Bind(&TileManager::CheckIfReadyToActivate,
@@ -318,6 +318,10 @@ void TileManager::DidFinishRunningTasks(TaskSet task_set) {
if (task_set == ALL) {
TRACE_EVENT1("cc", "TileManager::DidFinishRunningTasks", "task_set", "ALL");
+ rasterizer_->CheckForCompletedTasks();
+ did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
+ has_active_visible_tile_scheduled_ = false;
+
bool memory_usage_above_limit = resource_pool_->total_memory_usage_bytes() >
global_state_.soft_memory_limit_in_bytes;
@@ -327,9 +331,6 @@ void TileManager::DidFinishRunningTasks(TaskSet task_set) {
!memory_usage_above_limit)
return;
- rasterizer_->CheckForCompletedTasks();
- did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
-
TileVector tiles_that_need_to_be_rasterized;
AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized);
@@ -430,7 +431,7 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
resource_pool_->acquired_memory_usage_bytes());
}
-bool TileManager::UpdateVisibleTiles() {
+void TileManager::UpdateVisibleTiles() {
TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles");
rasterizer_->CheckForCompletedTasks();
@@ -443,10 +444,6 @@ bool TileManager::UpdateVisibleTiles() {
"stats",
RasterTaskCompletionStatsAsValue(update_visible_tiles_stats_));
update_visible_tiles_stats_ = RasterTaskCompletionStats();
-
- bool did_initialize_visible_tile = did_initialize_visible_tile_;
- did_initialize_visible_tile_ = false;
- return did_initialize_visible_tile;
}
scoped_refptr<base::debug::ConvertableToTraceFormat>
@@ -673,6 +670,8 @@ void TileManager::ScheduleTasks(
raster_queue_.Reset();
+ has_active_visible_tile_scheduled_ = false;
+
// Build a new task queue containing all task currently needed. Tasks
// are added in order of priority, highest priority task first.
for (TileVector::const_iterator it = tiles_that_need_to_be_rasterized.begin();
@@ -681,6 +680,9 @@ void TileManager::ScheduleTasks(
Tile* tile = *it;
ManagedTileState& mts = tile->managed_state();
+ if (tile->priority(ACTIVE_TREE).distance_to_visible == 0.f)
+ has_active_visible_tile_scheduled_ = true;
+
DCHECK(mts.draw_info.requires_resource());
DCHECK(!mts.draw_info.resource_);
@@ -822,9 +824,6 @@ void TileManager::OnRasterTaskCompleted(
mts.draw_info.resource_ = resource.Pass();
}
- if (tile->priority(ACTIVE_TREE).distance_to_visible == 0.f)
- did_initialize_visible_tile_ = true;
-
client_->NotifyTileStateChanged(tile);
}

Powered by Google App Engine
This is Rietveld 408576698