| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/tiled_layer.h" | 5 #include "cc/layers/tiled_layer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 CHECK(TileAt(i, j)); | 287 CHECK(TileAt(i, j)); |
| 288 | 288 |
| 289 return added_tile; | 289 return added_tile; |
| 290 } | 290 } |
| 291 | 291 |
| 292 void TiledLayer::SetNeedsDisplayRect(const gfx::RectF& dirty_rect) { | 292 void TiledLayer::SetNeedsDisplayRect(const gfx::RectF& dirty_rect) { |
| 293 InvalidateContentRect(LayerRectToContentRect(dirty_rect)); | 293 InvalidateContentRect(LayerRectToContentRect(dirty_rect)); |
| 294 ContentsScalingLayer::SetNeedsDisplayRect(dirty_rect); | 294 ContentsScalingLayer::SetNeedsDisplayRect(dirty_rect); |
| 295 } | 295 } |
| 296 | 296 |
| 297 void TiledLayer::InvalidateContentRect(gfx::Rect content_rect) { | 297 void TiledLayer::InvalidateContentRect(const gfx::Rect& content_rect) { |
| 298 UpdateBounds(); | 298 UpdateBounds(); |
| 299 if (tiler_->is_empty() || content_rect.IsEmpty() || skips_draw_) | 299 if (tiler_->is_empty() || content_rect.IsEmpty() || skips_draw_) |
| 300 return; | 300 return; |
| 301 | 301 |
| 302 for (LayerTilingData::TileMap::const_iterator iter = tiler_->tiles().begin(); | 302 for (LayerTilingData::TileMap::const_iterator iter = tiler_->tiles().begin(); |
| 303 iter != tiler_->tiles().end(); | 303 iter != tiler_->tiles().end(); |
| 304 ++iter) { | 304 ++iter) { |
| 305 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second); | 305 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second); |
| 306 DCHECK(tile); | 306 DCHECK(tile); |
| 307 // TODO(enne): This should not ever be null. | 307 // TODO(enne): This should not ever be null. |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 tile->managed_resource()->ReturnBackingTexture(); | 461 tile->managed_resource()->ReturnBackingTexture(); |
| 462 } | 462 } |
| 463 } | 463 } |
| 464 | 464 |
| 465 paint_rect->Union(tile->dirty_rect); | 465 paint_rect->Union(tile->dirty_rect); |
| 466 tile->MarkForUpdate(); | 466 tile->MarkForUpdate(); |
| 467 } | 467 } |
| 468 } | 468 } |
| 469 } | 469 } |
| 470 | 470 |
| 471 void TiledLayer::UpdateTileTextures(gfx::Rect update_rect, | 471 void TiledLayer::UpdateTileTextures(const gfx::Rect& update_rect, |
| 472 gfx::Rect paint_rect, | 472 const gfx::Rect& paint_rect, |
| 473 int left, | 473 int left, |
| 474 int top, | 474 int top, |
| 475 int right, | 475 int right, |
| 476 int bottom, | 476 int bottom, |
| 477 ResourceUpdateQueue* queue, | 477 ResourceUpdateQueue* queue, |
| 478 const OcclusionTracker* occlusion) { | 478 const OcclusionTracker* occlusion) { |
| 479 // The update_rect should be in layer space. So we have to convert the | 479 // The update_rect should be in layer space. So we have to convert the |
| 480 // paint_rect from content space to layer space. | 480 // paint_rect from content space to layer space. |
| 481 float width_scale = | 481 float width_scale = |
| 482 paint_properties().bounds.width() / | 482 paint_properties().bounds.width() / |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 return content_rect.width() <= | 586 return content_rect.width() <= |
| 587 viewport_size.width() + tiler_->tile_size().width() && | 587 viewport_size.width() + tiler_->tile_size().width() && |
| 588 content_rect.height() <= | 588 content_rect.height() <= |
| 589 viewport_size.height() + tiler_->tile_size().height(); | 589 viewport_size.height() + tiler_->tile_size().height(); |
| 590 } | 590 } |
| 591 | 591 |
| 592 namespace { | 592 namespace { |
| 593 // TODO(epenner): Remove this and make this based on distance once distance can | 593 // TODO(epenner): Remove this and make this based on distance once distance can |
| 594 // be calculated for offscreen layers. For now, prioritize all small animated | 594 // be calculated for offscreen layers. For now, prioritize all small animated |
| 595 // layers after 512 pixels of pre-painting. | 595 // layers after 512 pixels of pre-painting. |
| 596 void SetPriorityForTexture(gfx::Rect visible_rect, | 596 void SetPriorityForTexture(const gfx::Rect& visible_rect, |
| 597 gfx::Rect tile_rect, | 597 const gfx::Rect& tile_rect, |
| 598 bool draws_to_root, | 598 bool draws_to_root, |
| 599 bool is_small_animated_layer, | 599 bool is_small_animated_layer, |
| 600 PrioritizedResource* texture) { | 600 PrioritizedResource* texture) { |
| 601 int priority = PriorityCalculator::LowestPriority(); | 601 int priority = PriorityCalculator::LowestPriority(); |
| 602 if (!visible_rect.IsEmpty()) { | 602 if (!visible_rect.IsEmpty()) { |
| 603 priority = PriorityCalculator::PriorityFromDistance( | 603 priority = PriorityCalculator::PriorityFromDistance( |
| 604 visible_rect, tile_rect, draws_to_root); | 604 visible_rect, tile_rect, draws_to_root); |
| 605 } | 605 } |
| 606 | 606 |
| 607 if (is_small_animated_layer) { | 607 if (is_small_animated_layer) { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 ++iter) { | 677 ++iter) { |
| 678 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second); | 678 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second); |
| 679 // TODO(enne): This should not ever be null. | 679 // TODO(enne): This should not ever be null. |
| 680 if (!tile) | 680 if (!tile) |
| 681 continue; | 681 continue; |
| 682 tile->ResetUpdateState(); | 682 tile->ResetUpdateState(); |
| 683 } | 683 } |
| 684 } | 684 } |
| 685 | 685 |
| 686 namespace { | 686 namespace { |
| 687 gfx::Rect ExpandRectByDelta(gfx::Rect rect, gfx::Vector2d delta) { | 687 gfx::Rect ExpandRectByDelta(const gfx::Rect& rect, gfx::Vector2d delta) { |
| 688 int width = rect.width() + std::abs(delta.x()); | 688 int width = rect.width() + std::abs(delta.x()); |
| 689 int height = rect.height() + std::abs(delta.y()); | 689 int height = rect.height() + std::abs(delta.y()); |
| 690 int x = rect.x() + ((delta.x() < 0) ? delta.x() : 0); | 690 int x = rect.x() + ((delta.x() < 0) ? delta.x() : 0); |
| 691 int y = rect.y() + ((delta.y() < 0) ? delta.y() : 0); | 691 int y = rect.y() + ((delta.y() < 0) ? delta.y() : 0); |
| 692 return gfx::Rect(x, y, width, height); | 692 return gfx::Rect(x, y, width, height); |
| 693 } | 693 } |
| 694 } | 694 } |
| 695 | 695 |
| 696 void TiledLayer::UpdateScrollPrediction() { | 696 void TiledLayer::UpdateScrollPrediction() { |
| 697 // This scroll prediction is very primitive and should be replaced by a | 697 // This scroll prediction is very primitive and should be replaced by a |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 911 gfx::Rect prepaint_rect = visible_content_rect(); | 911 gfx::Rect prepaint_rect = visible_content_rect(); |
| 912 prepaint_rect.Inset(-tiler_->tile_size().width() * kPrepaintColumns, | 912 prepaint_rect.Inset(-tiler_->tile_size().width() * kPrepaintColumns, |
| 913 -tiler_->tile_size().height() * kPrepaintRows); | 913 -tiler_->tile_size().height() * kPrepaintRows); |
| 914 gfx::Rect content_rect(content_bounds()); | 914 gfx::Rect content_rect(content_bounds()); |
| 915 prepaint_rect.Intersect(content_rect); | 915 prepaint_rect.Intersect(content_rect); |
| 916 | 916 |
| 917 return prepaint_rect; | 917 return prepaint_rect; |
| 918 } | 918 } |
| 919 | 919 |
| 920 } // namespace cc | 920 } // namespace cc |
| OLD | NEW |