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

Side by Side Diff: cc/tile_priority.h

Issue 12084031: A host of micro-optimizations and a refactor of TimeForBoundsToIntersect (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebasing to tip of tree Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « cc/tile_manager.cc ('k') | cc/tile_priority.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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_TILE_PRIORITY_H_ 5 #ifndef CC_TILE_PRIORITY_H_
6 #define CC_TILE_PRIORITY_H_ 6 #define CC_TILE_PRIORITY_H_
7 7
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 resolution = NON_IDEAL_RESOLUTION; 82 resolution = NON_IDEAL_RESOLUTION;
83 83
84 time_to_visible_in_seconds = 84 time_to_visible_in_seconds =
85 std::min(active.time_to_visible_in_seconds, 85 std::min(active.time_to_visible_in_seconds,
86 pending.time_to_visible_in_seconds); 86 pending.time_to_visible_in_seconds);
87 distance_to_visible_in_pixels = 87 distance_to_visible_in_pixels =
88 std::min(active.distance_to_visible_in_pixels, 88 std::min(active.distance_to_visible_in_pixels,
89 pending.distance_to_visible_in_pixels); 89 pending.distance_to_visible_in_pixels);
90 } 90 }
91 91
92 static const double kMaxTimeToVisibleInSeconds; 92 static const float kMaxDistanceInContentSpace;
93 static const double kMaxDistanceInContentSpace;
94 93
95 static int manhattanDistance(const gfx::RectF& a, const gfx::RectF& b); 94 static inline float manhattanDistance(const gfx::RectF& a, const gfx::RectF& b ) {
95 // Compute the union explicitly.
96 gfx::RectF c = gfx::RectF(
97 std::min(a.x(), b.x()),
98 std::min(a.y(), b.y()),
99 std::max(a.right(), b.right()) - std::min(a.x(), b.x()),
100 std::max(a.bottom(), b.bottom()) - std::min(a.y(), b.y()));
101
102 // Rects touching the edge of the screen should not be considered visible.
103 // So we add 1 pixel here to avoid that situation.
104 float x = std::max(0.0f, c.width() - a.width() - b.width() + 1.0f);
105 float y = std::max(0.0f, c.height() - a.height() - b.height() + 1.0f);
106 return (x + y);
107 }
96 108
97 // Calculate the time for the |current_bounds| to intersect with the 109 // Calculate the time for the |current_bounds| to intersect with the
98 // |target_bounds| given its previous location and time delta. 110 // |target_bounds| given its previous location and time delta.
99 // This function should work for both scaling and scrolling case. 111 // This function should work for both scaling and scrolling case.
100 static double TimeForBoundsToIntersect(gfx::RectF previous_bounds, 112 static float TimeForBoundsToIntersect(const gfx::RectF& previous_bounds,
101 gfx::RectF current_bounds, 113 const gfx::RectF& current_bounds,
102 double time_delta, 114 float time_delta,
103 gfx::RectF target_bounds); 115 const gfx::RectF& target_bounds);
104 116
105 // If a tile is not live, then all other fields are invalid. 117 // If a tile is not live, then all other fields are invalid.
106 bool is_live; 118 bool is_live;
107 TileResolution resolution; 119 TileResolution resolution;
108 float time_to_visible_in_seconds; 120 float time_to_visible_in_seconds;
109 float distance_to_visible_in_pixels; 121 float distance_to_visible_in_pixels;
110 }; 122 };
111 123
112 enum TileMemoryLimitPolicy { 124 enum TileMemoryLimitPolicy {
113 // Nothing. 125 // Nothing.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 size_t memory_limit_in_bytes; 161 size_t memory_limit_in_bytes;
150 162
151 TreePriority tree_priority; 163 TreePriority tree_priority;
152 164
153 scoped_ptr<base::Value> AsValue() const; 165 scoped_ptr<base::Value> AsValue() const;
154 }; 166 };
155 167
156 } // namespace cc 168 } // namespace cc
157 169
158 #endif // CC_TILE_PRIORITY_H_ 170 #endif // CC_TILE_PRIORITY_H_
OLDNEW
« no previous file with comments | « cc/tile_manager.cc ('k') | cc/tile_priority.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698