Chromium Code Reviews| Index: cc/resources/picture_layer_tiling.cc |
| diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc |
| index 3035033bdc20e85fecf2b77ccfb4fbcdb1202447..b83cc4eb99497f6c979aaed314df0f7893cabf38 100644 |
| --- a/cc/resources/picture_layer_tiling.cc |
| +++ b/cc/resources/picture_layer_tiling.cc |
| @@ -342,6 +342,7 @@ void PictureLayerTiling::UpdateTilePriorities( |
| WhichTree tree, |
| gfx::Size device_viewport, |
| const gfx::RectF& viewport_in_layer_space, |
| + const gfx::RectF& visible_layer_rect, |
| gfx::Size last_layer_bounds, |
| gfx::Size current_layer_bounds, |
| float last_layer_contents_scale, |
| @@ -378,14 +379,20 @@ void PictureLayerTiling::UpdateTilePriorities( |
| gfx::Rect viewport_in_content_space = |
| gfx::ToEnclosingRect(gfx::ScaleRect(viewport_in_layer_space, |
| contents_scale_)); |
| + gfx::Rect visible_content_rect = |
| + gfx::ToEnclosingRect(gfx::ScaleRect(visible_layer_rect, |
| + contents_scale_)); |
| gfx::Size tile_size = tiling_data_.max_texture_size(); |
| int64 prioritized_rect_area = |
| max_tiles_for_interest_area * |
| tile_size.width() * tile_size.height(); |
| + gfx::Rect starting_rect = visible_content_rect.IsEmpty() |
| + ? viewport_in_content_space |
| + : visible_content_rect; |
| gfx::Rect prioritized_rect = ExpandRectEquallyToAreaBoundedBy( |
| - viewport_in_content_space, |
| + starting_rect, |
| prioritized_rect_area, |
| ContentRect()); |
| DCHECK(ContentRect().Contains(prioritized_rect)); |
| @@ -565,21 +572,18 @@ gfx::Rect PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy( |
| DCHECK(!bounding_rect.IsEmpty()); |
| DCHECK_GT(target_area, 0); |
| - // Expand the starting rect to cover target_area. |
| + // Expand the starting rect to cover target_area, if it is smaller than it. |
| int delta = ComputeExpansionDelta( |
| 2, 2, starting_rect.width(), starting_rect.height(), target_area); |
| gfx::Rect expanded_starting_rect = starting_rect; |
| - expanded_starting_rect.Inset(-delta, -delta); |
| + if (delta > 0) |
| + expanded_starting_rect.Inset(-delta, -delta); |
| gfx::Rect rect = IntersectRects(expanded_starting_rect, bounding_rect); |
| if (rect.IsEmpty()) { |
| // The starting_rect and bounding_rect are far away. |
| return rect; |
| } |
| - if (rect == expanded_starting_rect) { |
| - // The expanded starting rect already covers target_area on bounding_rect. |
| - return rect; |
| - } |
|
Xianzhu
2013/04/16 22:42:52
I think we can still keep this shortcut by adding
danakj
2013/04/17 01:13:34
PictureLayerTilingIteratorTest.TilesExistLargeView
|
| // Continue to expand rect to let it cover target_area. |