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

Unified Diff: cc/base/tiling_data.cc

Issue 505913003: cc: Remove and Create the correct tiles when resizing live tiles rect (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: livetiles: . Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: cc/base/tiling_data.cc
diff --git a/cc/base/tiling_data.cc b/cc/base/tiling_data.cc
index 9d4185dc4f8c71453eb9ca22fa6cbe1cc7de85f9..a39df585493708e89a6efd62406794f3bf730d9a 100644
--- a/cc/base/tiling_data.cc
+++ b/cc/base/tiling_data.cc
@@ -313,6 +313,10 @@ TilingData::Iterator::Iterator(const TilingData* tiling_data,
gfx::Rect tiling_bounds_rect(tiling_data_->tiling_size());
gfx::Rect rect(consider_rect);
rect.Intersect(tiling_bounds_rect);
+ if (rect.IsEmpty()) {
+ done();
+ return;
+ }
gfx::Rect top_left_tile;
if (include_borders) {
@@ -354,7 +358,8 @@ TilingData::Iterator& TilingData::Iterator::operator++() {
TilingData::DifferenceIterator::DifferenceIterator(
const TilingData* tiling_data,
const gfx::Rect& consider_rect,
- const gfx::Rect& ignore_rect)
+ const gfx::Rect& ignore_rect,
+ bool include_borders)
: BaseIterator(tiling_data),
consider_left_(-1),
consider_top_(-1),
@@ -379,24 +384,40 @@ TilingData::DifferenceIterator::DifferenceIterator(
return;
}
- consider_left_ =
- tiling_data_->FirstBorderTileXIndexFromSrcCoord(consider.x());
- consider_top_ =
- tiling_data_->FirstBorderTileYIndexFromSrcCoord(consider.y());
- consider_right_ =
- tiling_data_->LastBorderTileXIndexFromSrcCoord(consider.right() - 1);
- consider_bottom_ =
- tiling_data_->LastBorderTileYIndexFromSrcCoord(consider.bottom() - 1);
+ if (include_borders) {
+ consider_left_ =
+ tiling_data_->FirstBorderTileXIndexFromSrcCoord(consider.x());
+ consider_top_ =
+ tiling_data_->FirstBorderTileYIndexFromSrcCoord(consider.y());
+ consider_right_ =
+ tiling_data_->LastBorderTileXIndexFromSrcCoord(consider.right() - 1);
+ consider_bottom_ =
+ tiling_data_->LastBorderTileYIndexFromSrcCoord(consider.bottom() - 1);
+ } else {
+ consider_left_ = tiling_data_->TileXIndexFromSrcCoord(consider.x());
+ consider_top_ = tiling_data_->TileYIndexFromSrcCoord(consider.y());
+ consider_right_ =
+ tiling_data_->TileXIndexFromSrcCoord(consider.right() - 1);
+ consider_bottom_ =
+ tiling_data_->TileYIndexFromSrcCoord(consider.bottom() - 1);
+ }
if (!ignore.IsEmpty()) {
- ignore_left_ =
- tiling_data_->FirstBorderTileXIndexFromSrcCoord(ignore.x());
- ignore_top_ =
- tiling_data_->FirstBorderTileYIndexFromSrcCoord(ignore.y());
- ignore_right_ =
- tiling_data_->LastBorderTileXIndexFromSrcCoord(ignore.right() - 1);
- ignore_bottom_ =
- tiling_data_->LastBorderTileYIndexFromSrcCoord(ignore.bottom() - 1);
+ if (include_borders) {
+ ignore_left_ =
+ tiling_data_->FirstBorderTileXIndexFromSrcCoord(ignore.x());
+ ignore_top_ = tiling_data_->FirstBorderTileYIndexFromSrcCoord(ignore.y());
+ ignore_right_ =
+ tiling_data_->LastBorderTileXIndexFromSrcCoord(ignore.right() - 1);
+ ignore_bottom_ =
+ tiling_data_->LastBorderTileYIndexFromSrcCoord(ignore.bottom() - 1);
+ } else {
+ ignore_left_ = tiling_data_->TileXIndexFromSrcCoord(ignore.x());
+ ignore_top_ = tiling_data_->TileYIndexFromSrcCoord(ignore.y());
+ ignore_right_ = tiling_data_->TileXIndexFromSrcCoord(ignore.right() - 1);
+ ignore_bottom_ =
+ tiling_data_->TileYIndexFromSrcCoord(ignore.bottom() - 1);
+ }
// Clamp ignore indices to consider indices.
ignore_left_ = std::max(ignore_left_, consider_left_);

Powered by Google App Engine
This is Rietveld 408576698