invalidation_region.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/base/invalidation_region.h"
6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/metrics/histogram.h"
8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace {
10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochconst int kMaxInvalidationRectCount = 256;
12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}  // namespace
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace cc {
16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochInvalidationRegion::InvalidationRegion() {}
18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochInvalidationRegion::~InvalidationRegion() {}
20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid InvalidationRegion::Swap(Region* region) {
22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  region_.Swap(region);
23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid InvalidationRegion::Clear() {
26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  region_.Clear();
27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid InvalidationRegion::Union(gfx::Rect rect) {
30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  region_.Union(rect);
314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  SimplifyIfNeeded();
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid InvalidationRegion::SimplifyIfNeeded() {
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  if (region_.GetRegionComplexity() > kMaxInvalidationRectCount)
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    region_ = region_.bounds();
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}  // namespace cc
40