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 8db30c6de29089607882224caa72d8d3fb6a4cd0..7d6e2e4af8074dd9e8a2c5b9622b52d7a87e2209 100644 |
| --- a/cc/layers/picture_layer_impl.cc |
| +++ b/cc/layers/picture_layer_impl.cc |
| @@ -283,7 +283,7 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass, |
| // normally the same as draw viewport but can be independently overridden by |
| // embedders like Android WebView with SetExternalDrawConstraints. |
| gfx::Rect scaled_viewport_for_tile_priority = gfx::ScaleToEnclosingRect( |
| - GetViewportForTilePriorityInContentSpace(), max_contents_scale); |
| + viewport_rect_for_tile_priority_in_content_space_, max_contents_scale); |
| size_t missing_tile_count = 0u; |
| size_t on_demand_missing_tile_count = 0u; |
| @@ -474,8 +474,7 @@ bool PictureLayerImpl::UpdateTilePriorities( |
| double current_frame_time_in_seconds = |
| (layer_tree_impl()->CurrentBeginFrameArgs().frame_time - |
| base::TimeTicks()).InSecondsF(); |
| - gfx::Rect viewport_rect_in_layer_space = |
| - GetViewportForTilePriorityInContentSpace(); |
| + CacheViewportForTilePriorityInContentSpace(); |
| // The tiling set can require tiles for activation any of the following |
| // conditions are true: |
| @@ -496,21 +495,21 @@ bool PictureLayerImpl::UpdateTilePriorities( |
| // Pass |occlusion_in_content_space| for |occlusion_in_layer_space| since |
| // they are the same space in picture layer, as contents scale is always 1. |
| bool updated = tilings_->UpdateTilePriorities( |
| - viewport_rect_in_layer_space, ideal_contents_scale_, |
| + viewport_rect_for_tile_priority_in_content_space_, ideal_contents_scale_, |
| current_frame_time_in_seconds, occlusion_in_content_space, |
| can_require_tiles_for_activation); |
| return updated; |
| } |
| -gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const { |
| +void PictureLayerImpl::CacheViewportForTilePriorityInContentSpace() { |
|
danakj
2015/01/21 22:32:18
s/CacheViewportFor/UpdateViewportRectFor/
hush (inactive)
2015/01/21 22:40:46
Done.
|
| // If visible_rect_for_tile_priority_ is empty or |
| // viewport_rect_for_tile_priority is set to be different from the device |
| // viewport, try to inverse project the viewport into layer space and use |
| // that. Otherwise just use visible_rect_for_tile_priority_ |
| gfx::Rect visible_rect_in_content_space = visible_rect_for_tile_priority_; |
| + |
|
danakj
2015/01/21 22:32:18
don't add whitespace
hush (inactive)
2015/01/21 22:40:46
Done.
|
| gfx::Rect viewport_rect_for_tile_priority = |
| layer_tree_impl()->ViewportRectForTilePriority(); |
| - |
| if (visible_rect_in_content_space.IsEmpty() || |
| layer_tree_impl()->DeviceViewport() != viewport_rect_for_tile_priority) { |
| gfx::Transform view_to_layer(gfx::Transform::kSkipInitialization); |
| @@ -521,7 +520,8 @@ gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const { |
| view_to_layer, viewport_rect_for_tile_priority)); |
| } |
| } |
| - return visible_rect_in_content_space; |
| + viewport_rect_for_tile_priority_in_content_space_ = |
| + visible_rect_in_content_space; |
| } |
| PictureLayerImpl* PictureLayerImpl::GetPendingOrActiveTwinLayer() const { |
| @@ -1180,7 +1180,8 @@ void PictureLayerImpl::AsValueInto(base::debug::TracedValue* state) const { |
| state->EndArray(); |
| state->BeginArray("tile_priority_rect"); |
| - MathUtil::AddToTracedValue(GetViewportForTilePriorityInContentSpace(), state); |
| + MathUtil::AddToTracedValue(viewport_rect_for_tile_priority_in_content_space_, |
| + state); |
| state->EndArray(); |
| state->BeginArray("visible_rect"); |
| @@ -1245,7 +1246,7 @@ bool PictureLayerImpl::AllTilesRequiredAreReadyToDraw( |
| if (visible_rect_for_tile_priority_.IsEmpty()) |
| return true; |
| - gfx::Rect rect = GetViewportForTilePriorityInContentSpace(); |
| + gfx::Rect rect = viewport_rect_for_tile_priority_in_content_space_; |
| rect.Intersect(visible_rect_for_tile_priority_); |
| // The high resolution tiling is the only tiling that can mark tiles as |