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

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: 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
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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 distance_to_visible_in_pixels = 54 distance_to_visible_in_pixels =
55 std::min(active.distance_to_visible_in_pixels, 55 std::min(active.distance_to_visible_in_pixels,
56 pending.distance_to_visible_in_pixels); 56 pending.distance_to_visible_in_pixels);
57 } 57 }
58 58
59 float time_to_needed_in_seconds() const { 59 float time_to_needed_in_seconds() const {
60 return std::min(time_to_visible_in_seconds, 60 return std::min(time_to_visible_in_seconds,
61 time_to_ideal_resolution_in_seconds); 61 time_to_ideal_resolution_in_seconds);
62 } 62 }
63 63
64 static const double kMaxTimeToVisibleInSeconds; 64 static const float kMaxTimeToVisibleInSeconds;
65 65
66 static int manhattanDistance(const gfx::RectF& a, const gfx::RectF& b); 66 static inline float manhattanDistance(const gfx::RectF& a, const gfx::RectF& b ) {
67 // Compute the union explicitly.
68 gfx::RectF c = gfx::RectF(
69 std::min(a.x(), b.x()),
70 std::min(a.y(), b.y()),
71 std::max(a.right(), b.right() - std::min(a.x(), b.x())),
72 std::max(a.bottom(), b.bottom() - std::min(a.y(), b.y())));
73
74 // Rects touching the edge of the screen should not be considered visible.
75 // So we add 1 pixel here to avoid that situation.
76 float x = std::max(0.0f, c.width() - a.width() - b.width() + 1.0f);
77 float y = std::max(0.0f, c.height() - a.height() - b.height() + 1.0f);
78 return (x + y);
79 }
67 80
68 // Calculate the time for the |current_bounds| to intersect with the 81 // Calculate the time for the |current_bounds| to intersect with the
69 // |target_bounds| given its previous location and time delta. 82 // |target_bounds| given its previous location and time delta.
70 // This function should work for both scaling and scrolling case. 83 // This function should work for both scaling and scrolling case.
71 static double TimeForBoundsToIntersect(gfx::RectF previous_bounds, 84 static float TimeForBoundsToIntersect(const gfx::RectF& previous_bounds,
72 gfx::RectF current_bounds, 85 const gfx::RectF& current_bounds,
73 double time_delta, 86 float time_delta,
74 gfx::RectF target_bounds); 87 const gfx::RectF& target_bounds);
75 88
76 TileResolution resolution; 89 TileResolution resolution;
77 float time_to_visible_in_seconds; 90 float time_to_visible_in_seconds;
78 float time_to_ideal_resolution_in_seconds; 91 float time_to_ideal_resolution_in_seconds;
79 float distance_to_visible_in_pixels; 92 float distance_to_visible_in_pixels;
80 }; 93 };
81 94
82 enum TileMemoryLimitPolicy { 95 enum TileMemoryLimitPolicy {
83 // Nothing. 96 // Nothing.
84 ALLOW_NOTHING, 97 ALLOW_NOTHING,
(...skipping 25 matching lines...) Expand all
110 TileMemoryLimitPolicy memory_limit_policy; 123 TileMemoryLimitPolicy memory_limit_policy;
111 124
112 size_t memory_limit_in_bytes; 125 size_t memory_limit_in_bytes;
113 126
114 TreePriority tree_priority; 127 TreePriority tree_priority;
115 }; 128 };
116 129
117 } // namespace cc 130 } // namespace cc
118 131
119 #endif // CC_TILE_PRIORITY_H_ 132 #endif // CC_TILE_PRIORITY_H_
OLDNEW
« cc/picture_layer_tiling.cc ('K') | « cc/tile_manager.cc ('k') | cc/tile_priority.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698