Index: cc/tiles/picture_layer_tiling_set.h |
diff --git a/cc/tiles/picture_layer_tiling_set.h b/cc/tiles/picture_layer_tiling_set.h |
index 156f82c323a6b37f916c271ef58cb5d8018be0c9..dfa059265228416d67c1920dc6c4b98d346cfe97 100644 |
--- a/cc/tiles/picture_layer_tiling_set.h |
+++ b/cc/tiles/picture_layer_tiling_set.h |
@@ -42,9 +42,9 @@ class CC_EXPORT PictureLayerTilingSet { |
static std::unique_ptr<PictureLayerTilingSet> Create( |
WhichTree tree, |
PictureLayerTilingClient* client, |
- size_t tiling_interest_area_padding, |
+ int tiling_interest_area_padding, |
float skewport_target_time_in_seconds, |
- int skewport_extrapolation_limit_in_content); |
+ int skewport_extrapolation_limit_in_screen_pixels); |
~PictureLayerTilingSet(); |
@@ -115,6 +115,7 @@ class CC_EXPORT PictureLayerTilingSet { |
void RemoveAllTiles(); |
// Update the rects and priorities for tiles based on the given information. |
+ // Returns true if PrepareTiles is required. |
bool UpdateTilePriorities(const gfx::Rect& required_rect_in_layer_space, |
float ideal_contents_scale, |
double current_frame_time_in_seconds, |
@@ -172,13 +173,40 @@ class CC_EXPORT PictureLayerTilingSet { |
TilingRange GetTilingRange(TilingRangeType type) const; |
- private: |
+ protected: |
+ struct FrameVisibleRect { |
+ FrameVisibleRect(const gfx::Rect& rect, double time_in_seconds) |
+ : visible_rect_in_layer_space(rect), |
+ frame_time_in_seconds(time_in_seconds) {} |
+ |
+ gfx::Rect visible_rect_in_layer_space; |
+ double frame_time_in_seconds; |
+ }; |
+ |
+ struct StateSinceLastTilePriorityUpdate { |
+ class AutoClear { |
+ public: |
+ explicit AutoClear(StateSinceLastTilePriorityUpdate* state_to_clear) |
+ : state_to_clear_(state_to_clear) {} |
+ ~AutoClear() { *state_to_clear_ = StateSinceLastTilePriorityUpdate(); } |
+ |
+ private: |
+ StateSinceLastTilePriorityUpdate* state_to_clear_; |
+ }; |
+ |
+ StateSinceLastTilePriorityUpdate() |
+ : invalidated(false), added_tilings(false) {} |
+ |
+ bool invalidated; |
+ bool added_tilings; |
+ }; |
+ |
explicit PictureLayerTilingSet( |
WhichTree tree, |
PictureLayerTilingClient* client, |
- size_t tiling_interest_area_padding, |
+ int tiling_interest_area_padding, |
float skewport_target_time_in_seconds, |
- int skewport_extrapolation_limit_in_content_pixels); |
+ int skewport_extrapolation_limit_in_screen_pixels); |
void CopyTilingsAndPropertiesFromPendingTwin( |
const PictureLayerTilingSet* pending_twin_set, |
@@ -189,15 +217,39 @@ class CC_EXPORT PictureLayerTilingSet { |
void Remove(PictureLayerTiling* tiling); |
void VerifyTilings(const PictureLayerTilingSet* pending_twin_set) const; |
+ bool TilingsNeedUpdate(const gfx::Rect& required_rect_in_layer_space, |
+ double current_frame_time_in_Seconds); |
+ gfx::Rect ComputeSkewport(const gfx::Rect& visible_rect_in_layer_space, |
+ double current_frame_time_in_seconds, |
+ float ideal_contents_scale); |
+ gfx::Rect ComputeSoonBorderRect(const gfx::Rect& visible_rect_in_layer_space, |
+ float ideal_contents_scale); |
+ void UpdatePriorityRects(const gfx::Rect& visible_rect_in_layer_space, |
+ double current_frame_time_in_seconds, |
+ float ideal_contents_scale); |
+ |
std::vector<std::unique_ptr<PictureLayerTiling>> tilings_; |
- const size_t tiling_interest_area_padding_; |
+ const int tiling_interest_area_padding_; |
const float skewport_target_time_in_seconds_; |
- const int skewport_extrapolation_limit_in_content_pixels_; |
+ const int skewport_extrapolation_limit_in_screen_pixels_; |
WhichTree tree_; |
PictureLayerTilingClient* client_; |
+ // State saved for computing velocities based on finite differences. |
+ // .front() of the list refers to the most recent FrameVisibleRect. |
+ std::list<FrameVisibleRect> visible_rect_history_; |
+ StateSinceLastTilePriorityUpdate state_since_last_tile_priority_update_; |
+ |
+ scoped_refptr<RasterSource> raster_source_; |
+ |
+ gfx::Rect visible_rect_in_layer_space_; |
+ gfx::Rect skewport_in_layer_space_; |
+ gfx::Rect soon_border_rect_in_layer_space_; |
+ gfx::Rect eventually_rect_in_layer_space_; |
friend class Iterator; |
+ |
+ private: |
DISALLOW_COPY_AND_ASSIGN(PictureLayerTilingSet); |
}; |