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 0826186f4df64540bcb5ae86521a2d7f17c3b5bc..8e0862948b154af96ca4a02cd5081e6995607cef 100644 |
| --- a/cc/layers/picture_layer_impl.cc |
| +++ b/cc/layers/picture_layer_impl.cc |
| @@ -40,7 +40,6 @@ PictureLayerImpl::PictureLayerImpl(LayerTreeImpl* tree_impl, int id) |
| : LayerImpl(tree_impl, id), |
| twin_layer_(NULL), |
| pile_(PicturePileImpl::Create()), |
| - last_content_scale_(0), |
| is_mask_(false), |
| ideal_page_scale_(0.f), |
| ideal_device_scale_(0.f), |
| @@ -334,42 +333,31 @@ void PictureLayerImpl::UpdateTilePriorities() { |
| UpdateLCDTextStatus(can_use_lcd_text()); |
| - gfx::Transform current_screen_space_transform = screen_space_transform(); |
| - |
| - gfx::Size viewport_size = layer_tree_impl()->DrawViewportSize(); |
| - gfx::Rect viewport_in_content_space; |
| - gfx::Transform screen_to_layer(gfx::Transform::kSkipInitialization); |
| - if (screen_space_transform().GetInverse(&screen_to_layer)) { |
| - viewport_in_content_space = |
| - gfx::ToEnclosingRect(MathUtil::ProjectClippedRect( |
| - screen_to_layer, gfx::Rect(viewport_size))); |
| + // Use visible_content_rect, unless it's empty. If it's empty, then |
| + // try to inverse project the viewport into layer space and use that. |
| + gfx::Rect visible_rect_in_content_space = visible_content_rect(); |
| + if (visible_rect_in_content_space.IsEmpty()) { |
| + gfx::Transform screen_to_layer(gfx::Transform::kSkipInitialization); |
| + if (screen_space_transform().GetInverse(&screen_to_layer)) { |
| + gfx::Size viewport_size = layer_tree_impl()->DrawViewportSize(); |
| + visible_rect_in_content_space = |
| + gfx::ToEnclosingRect(MathUtil::ProjectClippedRect( |
| + screen_to_layer, gfx::Rect(viewport_size))); |
| + } |
| } |
| WhichTree tree = |
| layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE; |
| - size_t max_tiles_for_interest_area = |
| - layer_tree_impl()->settings().max_tiles_for_interest_area; |
| + |
| tilings_->UpdateTilePriorities( |
| tree, |
| - viewport_size, |
| - viewport_in_content_space, |
| - visible_content_rect(), |
| - last_bounds_, |
| - bounds(), |
| - last_content_scale_, |
| + visible_rect_in_content_space, |
|
enne (OOO)
2014/02/04 00:38:22
This caller passes visible_rect_in_content_space b
vmpstr
2014/02/04 19:50:49
This is PictureLayerTilingSet::UpdateTilePrioritie
|
| contents_scale_x(), |
| - last_screen_space_transform_, |
| - current_screen_space_transform, |
| - current_frame_time_in_seconds, |
| - max_tiles_for_interest_area); |
| + current_frame_time_in_seconds); |
| if (layer_tree_impl()->IsPendingTree()) |
| MarkVisibleResourcesAsRequired(); |
| - last_screen_space_transform_ = current_screen_space_transform; |
| - last_bounds_ = bounds(); |
| - last_content_scale_ = contents_scale_x(); |
| - |
| // Tile priorities were modified. |
| layer_tree_impl()->DidModifyTilePriorities(); |
| } |
| @@ -513,6 +501,14 @@ const PictureLayerTiling* PictureLayerImpl::GetTwinTiling( |
| return NULL; |
| } |
| +size_t PictureLayerImpl::GetMaxTilesForInterestArea() const { |
| + return layer_tree_impl()->settings().max_tiles_for_interest_area; |
| +} |
| + |
| +float PictureLayerImpl::GetSkewportTargetTimeInSeconds() const { |
| + return layer_tree_impl()->settings().skewport_target_time_in_seconds; |
| +} |
| + |
| gfx::Size PictureLayerImpl::CalculateTileSize( |
| const gfx::Size& content_bounds) const { |
| if (is_mask_) { |
| @@ -723,12 +719,6 @@ void PictureLayerImpl::MarkVisibleResourcesAsRequired() const { |
| if (!*iter || !iter->IsReadyToDraw()) |
| continue; |
| - // This iteration is over the visible content rect which is potentially |
| - // less conservative than projecting the viewport into the layer. |
| - // Ignore tiles that are know to be outside the viewport. |
| - if (iter->priority(PENDING_TREE).distance_to_visible_in_pixels != 0) |
| - continue; |
| - |
| missing_region.Subtract(iter.geometry_rect()); |
| iter->MarkRequiredForActivation(); |
| } |
| @@ -792,12 +782,6 @@ bool PictureLayerImpl::MarkVisibleTilesAsRequired( |
| if (!tile) |
| continue; |
| - // This iteration is over the visible content rect which is potentially |
| - // less conservative than projecting the viewport into the layer. |
| - // Ignore tiles that are know to be outside the viewport. |
| - if (tile->priority(PENDING_TREE).distance_to_visible_in_pixels != 0) |
| - continue; |
| - |
| // If the missing region doesn't cover it, this tile is fully |
| // covered by acceptable tiles at other scales. |
| if (!missing_region.Intersects(iter.geometry_rect())) |