| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index 6845a071fe605ab02c7ed14fece2a583d47f7fe0..3dbce3cb6dab0bb1327dfb34bb0811fbccc7b8b6 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();
|
| + UpdateViewportRectForTilePriorityInContentSpace();
|
|
|
| // The tiling set can require tiles for activation any of the following
|
| // conditions are true:
|
| @@ -496,13 +495,13 @@ 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::UpdateViewportRectForTilePriorityInContentSpace() {
|
| // 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
|
| @@ -510,7 +509,6 @@ gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const {
|
| gfx::Rect visible_rect_in_content_space = visible_rect_for_tile_priority_;
|
| 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 +519,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,8 +1179,8 @@ void PictureLayerImpl::AsValueInto(base::debug::TracedValue* state) const {
|
| state->EndArray();
|
|
|
| MathUtil::AddToTracedValue("tile_priority_rect",
|
| - GetViewportForTilePriorityInContentSpace(), state);
|
| -
|
| + viewport_rect_for_tile_priority_in_content_space_,
|
| + state);
|
| MathUtil::AddToTracedValue("visible_rect", visible_content_rect(), state);
|
|
|
| state->BeginArray("pictures");
|
| @@ -1240,7 +1239,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
|
|
|