summaryrefslogtreecommitdiffstats
path: root/cc/layers/tiled_layer.cc
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-22 01:16:43 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-22 01:21:15 +0000
commitd5467eb7835eccd7b1e1a65096c9b1f37c70fcb2 (patch)
treedb295fcc90bc936cf52818bffd73d7560c80f0f3 /cc/layers/tiled_layer.cc
parent903cf847d2d66f33e1f2cdab5f45a1b07558fa7a (diff)
downloadchromium_src-d5467eb7835eccd7b1e1a65096c9b1f37c70fcb2.zip
chromium_src-d5467eb7835eccd7b1e1a65096c9b1f37c70fcb2.tar.gz
chromium_src-d5467eb7835eccd7b1e1a65096c9b1f37c70fcb2.tar.bz2
cc: Replace Region with SimpleEnclosedRegion for occlusion tracking
Instead of using an arbitrary Region, which is costly (slow), use a new SimpleEnclosedRegion. This class tracks only a single Rect at a given time so it is very fast and small. It tries to get something like the largest rect enclosed in the actual Region (were we to track such a Region) in an online fashion, ie it doesn't remember anything except its current largest possible rect. BUG=405663 Review URL: https://codereview.chromium.org/202523002 Cr-Commit-Position: refs/heads/master@{#291292} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291292 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layers/tiled_layer.cc')
-rw-r--r--cc/layers/tiled_layer.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/cc/layers/tiled_layer.cc b/cc/layers/tiled_layer.cc
index c1937e4..4a960a8 100644
--- a/cc/layers/tiled_layer.cc
+++ b/cc/layers/tiled_layer.cc
@@ -10,6 +10,7 @@
#include "base/auto_reset.h"
#include "base/basictypes.h"
#include "build/build_config.h"
+#include "cc/base/simple_enclosed_region.h"
#include "cc/layers/layer_impl.h"
#include "cc/layers/tiled_layer_impl.h"
#include "cc/resources/layer_updater.h"
@@ -639,11 +640,11 @@ void TiledLayer::SetTexturePriorities(const PriorityCalculator& priority_calc) {
}
}
-Region TiledLayer::VisibleContentOpaqueRegion() const {
+SimpleEnclosedRegion TiledLayer::VisibleContentOpaqueRegion() const {
if (skips_draw_)
- return Region();
+ return SimpleEnclosedRegion();
if (contents_opaque())
- return visible_content_rect();
+ return SimpleEnclosedRegion(visible_content_rect());
return tiler_->OpaqueRegionInContentRect(visible_content_rect());
}