Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1463)

Unified Diff: cc/tiles/picture_layer_tiling_set.cc

Issue 2566613002: [4/5] Add translated rasterization support for PictureLayerTilingSet & below (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/tiles/picture_layer_tiling_set.cc
diff --git a/cc/tiles/picture_layer_tiling_set.cc b/cc/tiles/picture_layer_tiling_set.cc
index 55b86ae95a4bab317e978d2945f9b64a97d923db..ba69c611a906efdc1d3617ca554af3ccb21a3ff7 100644
--- a/cc/tiles/picture_layer_tiling_set.cc
+++ b/cc/tiles/picture_layer_tiling_set.cc
@@ -83,11 +83,16 @@ void PictureLayerTilingSet::CopyTilingsAndPropertiesFromPendingTwin(
bool tiling_sort_required = false;
for (const auto& pending_twin_tiling : pending_twin_set->tilings_) {
+ ScaleTranslate2d raster_transform = pending_twin_tiling->raster_transform();
PictureLayerTiling* this_tiling =
FindTilingWithScaleKey(pending_twin_tiling->contents_scale_key());
+ if (this_tiling && this_tiling->raster_transform() != raster_transform) {
enne (OOO) 2017/01/03 22:53:53 This could use some unit testing too.
trchen 2017/03/28 21:44:01 Done.
+ Remove(this_tiling);
+ this_tiling = nullptr;
+ }
if (!this_tiling) {
std::unique_ptr<PictureLayerTiling> new_tiling(new PictureLayerTiling(
- tree_, pending_twin_tiling->raster_scales(), raster_source_, client_,
+ tree_, raster_transform, raster_source_, client_,
kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
tilings_.push_back(std::move(new_tiling));
this_tiling = tilings_.back().get();
@@ -270,22 +275,20 @@ void PictureLayerTilingSet::MarkAllTilingsNonIdeal() {
}
PictureLayerTiling* PictureLayerTilingSet::AddTiling(
- float contents_scale_key,
+ const ScaleTranslate2d& raster_transform,
scoped_refptr<RasterSource> raster_source) {
if (!raster_source_)
raster_source_ = raster_source;
#if DCHECK_IS_ON()
for (size_t i = 0; i < tilings_.size(); ++i) {
- DCHECK_NE(tilings_[i]->contents_scale_key(), contents_scale_key);
+ DCHECK_NE(tilings_[i]->contents_scale_key(), raster_transform.scale());
DCHECK_EQ(tilings_[i]->raster_source(), raster_source.get());
}
#endif // DCHECK_IS_ON()
- gfx::SizeF raster_scales(contents_scale_key,
- contents_scale_key / aspect_ratio_);
tilings_.push_back(base::MakeUnique<PictureLayerTiling>(
- tree_, raster_scales, raster_source, client_,
+ tree_, raster_transform, raster_source, client_,
kMaxSoonBorderDistanceInScreenPixels, max_preraster_distance_));
PictureLayerTiling* appended = tilings_.back().get();
state_since_last_tile_priority_update_.added_tilings = true;
@@ -383,8 +386,7 @@ float PictureLayerTilingSet::GetMaximumContentsScale() const {
if (tilings_.empty())
return 0.f;
// The first tiling has the largest contents scale.
- return std::max(tilings_[0]->raster_scales().width(),
- tilings_[0]->raster_scales().height());
+ return tilings_[0]->raster_transform().scale();
}
bool PictureLayerTilingSet::TilingsNeedUpdate(

Powered by Google App Engine
This is Rietveld 408576698