Index: cc/picture_layer_tiling.cc |
diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc |
index 7ea16fd47e6211154fba2603ed6c279ae373b367..43d52c79f42045d952dc9d9193c7489bb1b6db48 100644 |
--- a/cc/picture_layer_tiling.cc |
+++ b/cc/picture_layer_tiling.cc |
@@ -24,7 +24,8 @@ PictureLayerTiling::PictureLayerTiling(float contents_scale, |
gfx::Size tile_size) |
: client_(NULL), |
contents_scale_(contents_scale), |
- tiling_data_(tile_size, gfx::Size(), true) { |
+ tiling_data_(tile_size, gfx::Size(), true), |
+ resolution_(NON_IDEAL_RESOLUTION) { |
} |
PictureLayerTiling::~PictureLayerTiling() { |
@@ -60,12 +61,6 @@ void PictureLayerTiling::CreateTile(int i, int j) { |
TileMapKey key(i, j); |
DCHECK(!tiles_[key]); |
tiles_[key] = client_->CreateTile(this, tile_rect); |
- |
- // TODO(enne): Remove this when we start setting priorities correctly. |
- TilePriority priority; |
- priority.resolution = HIGH_RESOLUTION; |
- priority.time_to_visible_in_seconds = 1000; |
- tiles_[key]->set_priority(ACTIVE_TREE, priority); |
} |
Region PictureLayerTiling::OpaqueRegionInContentRect( |
@@ -271,8 +266,8 @@ gfx::Size PictureLayerTiling::Iterator::texture_size() const { |
void PictureLayerTiling::UpdateTilePriorities( |
WhichTree tree, |
const gfx::Size& device_viewport, |
- float layer_content_scale_x, |
- float layer_content_scale_y, |
+ float last_layer_contents_scale, |
danakj
2013/01/09 00:22:49
ya this helps, thanks
|
+ float current_layer_contents_scale, |
const gfx::Transform& last_screen_transform, |
const gfx::Transform& current_screen_transform, |
double time_delta) { |
@@ -287,6 +282,7 @@ void PictureLayerTiling::UpdateTilePriorities( |
for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) { |
TileMapKey key = it->first; |
TilePriority priority; |
+ priority.resolution = resolution_; |
if (key.first > right || key.second > bottom) { |
priority.distance_to_visible_in_pixels = std::numeric_limits<int>::max(); |
priority.time_to_visible_in_seconds = |
@@ -296,22 +292,25 @@ void PictureLayerTiling::UpdateTilePriorities( |
} |
gfx::Rect tile_bound = tiling_data_.TileBounds(key.first, key.second); |
- gfx::RectF layer_content_rect = gfx::ScaleRect( |
+ gfx::RectF current_layer_content_rect = gfx::ScaleRect( |
+ tile_bound, |
+ current_layer_contents_scale / contents_scale_, |
+ current_layer_contents_scale / contents_scale_); |
+ gfx::RectF current_screen_rect = MathUtil::mapClippedRect( |
+ current_screen_transform, current_layer_content_rect); |
+ gfx::RectF last_layer_content_rect = gfx::ScaleRect( |
tile_bound, |
- layer_content_scale_x / contents_scale_, |
- layer_content_scale_y / contents_scale_); |
- gfx::RectF screen_rect = MathUtil::mapClippedRect( |
- current_screen_transform, layer_content_rect); |
- gfx::RectF previous_rect = MathUtil::mapClippedRect( |
- last_screen_transform, layer_content_rect); |
- |
- priority.resolution = HIGH_RESOLUTION; |
+ last_layer_contents_scale / contents_scale_, |
+ last_layer_contents_scale / contents_scale_); |
+ gfx::RectF last_screen_rect = MathUtil::mapClippedRect( |
+ last_screen_transform, last_layer_content_rect); |
+ |
priority.time_to_visible_in_seconds = |
TilePriority::TimeForBoundsToIntersect( |
- previous_rect, screen_rect, time_delta, view_rect); |
+ last_screen_rect, current_screen_rect, time_delta, view_rect); |
priority.distance_to_visible_in_pixels = |
- TilePriority::manhattanDistance(screen_rect, view_rect); |
+ TilePriority::manhattanDistance(current_screen_rect, view_rect); |
it->second->set_priority(tree, priority); |
} |
} |