diff options
Diffstat (limited to 'cc/surfaces/surface_aggregator.cc')
-rw-r--r-- | cc/surfaces/surface_aggregator.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/cc/surfaces/surface_aggregator.cc b/cc/surfaces/surface_aggregator.cc index 69618ba..902f836 100644 --- a/cc/surfaces/surface_aggregator.cc +++ b/cc/surfaces/surface_aggregator.cc @@ -547,9 +547,6 @@ gfx::Rect SurfaceAggregator::PrewalkTree(SurfaceId surface_id) { if (provider_) provider_->DeclareUsedResourcesFromChild(child_id, referenced_resources); - for (const auto& render_pass : frame_data->render_pass_list) - has_copy_requests_ |= !render_pass->copy_requests.empty(); - gfx::Rect damage_rect; if (!frame_data->render_pass_list.empty()) { RenderPass* last_pass = frame_data->render_pass_list.back(); @@ -566,6 +563,13 @@ gfx::Rect SurfaceAggregator::PrewalkTree(SurfaceId surface_id) { damage_rect.Union( MathUtil::MapEnclosingClippedRect(surface_info.second, surface_damage)); } + + if (surface->factory()) + surface->factory()->WillDrawSurface(surface->surface_id(), damage_rect); + + for (const auto& render_pass : frame_data->render_pass_list) + has_copy_requests_ |= !render_pass->copy_requests.empty(); + referenced_surfaces_.erase(it); return damage_rect; } |