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 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void InvalidationRegion::Union(const 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