Chromium Code Reviews| Index: cc/layers/picture_layer_impl.cc |
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc |
| index eaccbbf46ba873ebf196ad8f02c92c0a4a47db51..445dfa526535f0a603f55fb6ccc196e8f6a05726 100644 |
| --- a/cc/layers/picture_layer_impl.cc |
| +++ b/cc/layers/picture_layer_impl.cc |
| @@ -441,15 +441,17 @@ void PictureLayerImpl::AppendQuads( |
| CleanUpTilingsOnActiveLayer(seen_tilings); |
| } |
| -void PictureLayerImpl::UpdateTiles( |
| - const Occlusion& occlusion_in_content_space) { |
| +void PictureLayerImpl::UpdateTiles(const Occlusion& occlusion_in_content_space, |
| + bool draw_properties_valid) { |
|
danakj
2014/10/01 02:05:14
nit: this name seems like a bit of a like, like th
danakj
2014/10/01 02:05:37
a bit of a lie* i mean
boliu
2014/10/01 02:14:58
Umm, external_draw_constraints_invalid? But only t
danakj
2014/10/01 02:23:42
From the POV of this function it seems like the vi
boliu
2014/10/01 02:28:47
I was referring to LTHI::SetExternalDrawConstraint
|
| TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTiles"); |
| DCHECK_EQ(1.f, contents_scale_x()); |
| DCHECK_EQ(1.f, contents_scale_y()); |
| DoPostCommitInitializationIfNeeded(); |
| - visible_rect_for_tile_priority_ = visible_content_rect(); |
| + if (draw_properties_valid) { |
| + visible_rect_for_tile_priority_ = visible_content_rect(); |
| + } |
| viewport_rect_for_tile_priority_ = |
| layer_tree_impl()->ViewportRectForTilePriority(); |
| screen_space_transform_for_tile_priority_ = screen_space_transform(); |
| @@ -806,7 +808,7 @@ void PictureLayerImpl::MarkVisibleResourcesAsRequired() const { |
| // higher res on the active tree to a lower res on the pending tree. |
| // First, early out for layers with no visible content. |
| - if (visible_content_rect().IsEmpty()) |
| + if (visible_rect_for_tile_priority_.IsEmpty()) |
| return; |
| // Only mark tiles inside the viewport for tile priority as required for |
| @@ -814,7 +816,7 @@ void PictureLayerImpl::MarkVisibleResourcesAsRequired() const { |
| // can be independently overridden by embedders like Android WebView with |
| // SetExternalDrawConstraints. |
| gfx::Rect rect = GetViewportForTilePriorityInContentSpace(); |
| - rect.Intersect(visible_content_rect()); |
| + rect.Intersect(visible_rect_for_tile_priority_); |
| float min_acceptable_scale = |
| std::min(raster_contents_scale_, ideal_contents_scale_); |
| @@ -1492,16 +1494,18 @@ bool PictureLayerImpl::AllTilesRequiredForActivationAreReadyToDraw() const { |
| if (!tilings_) |
| return true; |
| - if (visible_content_rect().IsEmpty()) |
| + if (visible_rect_for_tile_priority_.IsEmpty()) |
| return true; |
| + gfx::Rect rect = GetViewportForTilePriorityInContentSpace(); |
| + rect.Intersect(visible_rect_for_tile_priority_); |
| + |
| for (size_t i = 0; i < tilings_->num_tilings(); ++i) { |
| PictureLayerTiling* tiling = tilings_->tiling_at(i); |
| if (tiling->resolution() != HIGH_RESOLUTION && |
| tiling->resolution() != LOW_RESOLUTION) |
| continue; |
| - gfx::Rect rect(visible_content_rect()); |
| for (PictureLayerTiling::CoverageIterator iter(tiling, 1.f, rect); iter; |
| ++iter) { |
| const Tile* tile = *iter; |