Home | History | Annotate | Download | only in base
      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 
      9 namespace {
     10 
     11 const int kMaxInvalidationRectCount = 256;
     12 
     13 }  // namespace
     14 
     15 namespace cc {
     16 
     17 InvalidationRegion::InvalidationRegion() {}
     18 
     19 InvalidationRegion::~InvalidationRegion() {}
     20 
     21 void InvalidationRegion::Swap(Region* region) {
     22   region_.Swap(region);
     23 }
     24 
     25 void InvalidationRegion::Clear() {
     26   region_.Clear();
     27 }
     28 
     29 void InvalidationRegion::Union(const gfx::Rect& rect) {
     30   region_.Union(rect);
     31   SimplifyIfNeeded();
     32 }
     33 
     34 void InvalidationRegion::SimplifyIfNeeded() {
     35   if (region_.GetRegionComplexity() > kMaxInvalidationRectCount)
     36     region_ = region_.bounds();
     37 }
     38 
     39 }  // namespace cc
     40