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