Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(316)

Side by Side Diff: cc/base/invalidation_region.h

Issue 2054473002: Speed up InvalidationRegion (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Limit pending_rects_ to kMaxInvalidationRectCount Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | cc/base/invalidation_region.cc » ('j') | cc/base/invalidation_region.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_BASE_INVALIDATION_REGION_H_ 5 #ifndef CC_BASE_INVALIDATION_REGION_H_
6 #define CC_BASE_INVALIDATION_REGION_H_ 6 #define CC_BASE_INVALIDATION_REGION_H_
7 7
8 #include <vector>
9
8 #include "cc/base/cc_export.h" 10 #include "cc/base/cc_export.h"
9 #include "cc/base/region.h" 11 #include "cc/base/region.h"
10 #include "ui/gfx/geometry/rect.h" 12 #include "ui/gfx/geometry/rect.h"
11 13
12 namespace cc { 14 namespace cc {
13 15
14 // This class behaves similarly to Region, but it may have false positives. That 16 // This class behaves similarly to Region, but it may have false positives. That
15 // is, InvalidationRegion can be simplified to encompass a larger area than the 17 // is, InvalidationRegion can be simplified to encompass a larger area than the
16 // collection of rects unioned. 18 // collection of rects unioned.
17 class CC_EXPORT InvalidationRegion { 19 class CC_EXPORT InvalidationRegion {
18 public: 20 public:
19 InvalidationRegion(); 21 InvalidationRegion();
20 ~InvalidationRegion(); 22 ~InvalidationRegion();
21 23
22 void Swap(Region* region); 24 void Swap(Region* region);
23 void Clear(); 25 void Clear();
24 void Union(const gfx::Rect& rect); 26 void Union(const gfx::Rect& rect);
25 bool IsEmpty() const { return region_.IsEmpty(); } 27 bool IsEmpty() const { return pending_rects_.empty() && region_.IsEmpty(); }
26 28
27 private: 29 private:
28 void SimplifyIfNeeded(); 30 void FinalizePendingRects();
29 31
30 Region region_; 32 Region region_;
33 std::vector<gfx::Rect> pending_rects_;
31 }; 34 };
32 35
33 } // namespace cc 36 } // namespace cc
34 37
35 #endif // CC_BASE_INVALIDATION_REGION_H_ 38 #endif // CC_BASE_INVALIDATION_REGION_H_
OLDNEW
« no previous file with comments | « no previous file | cc/base/invalidation_region.cc » ('j') | cc/base/invalidation_region.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698