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

Side by Side Diff: cc/layers/picture_layer_impl.cc

Issue 294463002: cc: Reset raster scale if we didn't sync high res tiling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more comments Created 6 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 gfx::Rect layer_rect = pile_->tile_bounds(x, y); 680 gfx::Rect layer_rect = pile_->tile_bounds(x, y);
681 invalidation_.Union(layer_rect); 681 invalidation_.Union(layer_rect);
682 } 682 }
683 } 683 }
684 684
685 // Union in the other newly exposed regions as invalid. 685 // Union in the other newly exposed regions as invalid.
686 Region difference_region = Region(gfx::Rect(bounds())); 686 Region difference_region = Region(gfx::Rect(bounds()));
687 difference_region.Subtract(gfx::Rect(other->bounds())); 687 difference_region.Subtract(gfx::Rect(other->bounds()));
688 invalidation_.Union(difference_region); 688 invalidation_.Union(difference_region);
689 689
690 bool synced_high_res_tiling = false;
690 if (CanHaveTilings()) { 691 if (CanHaveTilings()) {
691 tilings_->SyncTilings( 692 synced_high_res_tiling = tilings_->SyncTilings(
692 *other->tilings_, bounds(), invalidation_, MinimumContentsScale()); 693 *other->tilings_, bounds(), invalidation_, MinimumContentsScale());
693 } else { 694 } else {
694 RemoveAllTilings(); 695 RemoveAllTilings();
695 } 696 }
696 697
697 SanityCheckTilingState(); 698 // If our MinimumContentsScale has changed to prevent the twin's high res
699 // tiling from being synced, we should reset the raster scale and let it be
700 // recalculated (1) again. This can happen if our bounds shrink to the point
701 // where min contents scale grows.
702 // (1) - TODO(vmpstr) Instead of hoping that this will be recalculated, we
703 // should refactor this code a little bit and actually recalculate this.
704 // However, this is a larger undertaking, so this will work for now.
705 if (!synced_high_res_tiling)
706 ResetRasterScale();
707 else
708 SanityCheckTilingState();
698 } 709 }
699 710
700 void PictureLayerImpl::SyncTiling( 711 void PictureLayerImpl::SyncTiling(
701 const PictureLayerTiling* tiling) { 712 const PictureLayerTiling* tiling) {
702 if (!CanHaveTilingWithScale(tiling->contents_scale())) 713 if (!CanHaveTilingWithScale(tiling->contents_scale()))
703 return; 714 return;
704 tilings_->AddTiling(tiling->contents_scale()); 715 tilings_->AddTiling(tiling->contents_scale());
705 716
706 // If this tree needs update draw properties, then the tiling will 717 // If this tree needs update draw properties, then the tiling will
707 // get updated prior to drawing or activation. If this tree does not 718 // get updated prior to drawing or activation. If this tree does not
(...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after
1557 return iterator_index_ < iterators_.size(); 1568 return iterator_index_ < iterators_.size();
1558 } 1569 }
1559 1570
1560 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( 1571 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType(
1561 PictureLayerTiling::TilingEvictionTileIterator* it) const { 1572 PictureLayerTiling::TilingEvictionTileIterator* it) const {
1562 return it->get_type() == iteration_stage_ && 1573 return it->get_type() == iteration_stage_ &&
1563 (**it)->required_for_activation() == required_for_activation_; 1574 (**it)->required_for_activation() == required_for_activation_;
1564 } 1575 }
1565 1576
1566 } // namespace cc 1577 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698