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

Unified Diff: cc/trees/layer_tree_host_common.cc

Issue 13939005: cc: Add strict layer property change checking and handle bounds changes during paint. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add PaintProperties Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_common.cc
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc
index aa9ad5e57255c40ffad3c20b50bf134c9416d9cb..0e4d3e7893d41b260904d6a69bfc71c1d53a7b60 100644
--- a/cc/trees/layer_tree_host_common.cc
+++ b/cc/trees/layer_tree_host_common.cc
@@ -268,6 +268,17 @@ static inline void UpdateTilePrioritiesForLayer(LayerImpl* layer) {
static inline void UpdateTilePrioritiesForLayer(Layer* layer) {}
+static inline void SavePaintPropertiesLayer(LayerImpl* layer) {}
+
+static inline void SavePaintPropertiesLayer(Layer* layer) {
+ layer->SavePaintProperties();
+
+ if (layer->mask_layer())
+ layer->mask_layer()->SavePaintProperties();
+ if (layer->replica_layer() && layer->replica_layer()->mask_layer())
+ layer->replica_layer()->mask_layer()->SavePaintProperties();
+}
+
template <typename LayerType>
static bool SubtreeShouldRenderToSeparateSurface(
LayerType* layer,
@@ -767,7 +778,8 @@ static void CalculateDrawPropertiesInternal(
float page_scale_factor,
bool subtree_can_use_lcd_text,
gfx::Rect* drawable_content_rect_of_subtree,
- bool update_tile_priorities) {
+ bool update_tile_priorities,
+ bool save_paint_properties) {
// This function computes the new matrix transformations recursively for this
// layer and all its descendants. It also computes the appropriate render
// surfaces.
@@ -1246,7 +1258,8 @@ static void CalculateDrawPropertiesInternal(
page_scale_factor,
subtree_can_use_lcd_text,
&drawable_content_rect_of_child_subtree,
- update_tile_priorities);
+ update_tile_priorities,
+ save_paint_properties);
if (!drawable_content_rect_of_child_subtree.IsEmpty()) {
accumulated_drawable_content_rect_of_children.Union(
drawable_content_rect_of_child_subtree);
@@ -1409,6 +1422,9 @@ static void CalculateDrawPropertiesInternal(
layer->render_target()->render_surface()->
AddContributingDelegatedRenderPassLayer(layer);
}
+
+ if (save_paint_properties)
+ SavePaintPropertiesLayer(layer);
}
void LayerTreeHostCommon::CalculateDrawProperties(
@@ -1430,6 +1446,7 @@ void LayerTreeHostCommon::CalculateDrawProperties(
bool subtree_should_be_clipped = true;
gfx::Rect device_viewport_rect(device_viewport_size);
bool update_tile_priorities = false;
+ bool save_paint_properties = true;
// This function should have received a root layer.
DCHECK(IsRootLayer(root_layer));
@@ -1454,7 +1471,8 @@ void LayerTreeHostCommon::CalculateDrawProperties(
page_scale_factor,
can_use_lcd_text,
&total_drawable_content_rect,
- update_tile_priorities);
+ update_tile_priorities,
+ save_paint_properties);
// The dummy layer list should not have been used.
DCHECK_EQ(0u, dummy_layer_list.size());
@@ -1483,6 +1501,7 @@ void LayerTreeHostCommon::CalculateDrawProperties(
// initial clip rect.
bool subtree_should_be_clipped = true;
gfx::Rect device_viewport_rect(device_viewport_size);
+ bool save_paint_properties = false;
// This function should have received a root layer.
DCHECK(IsRootLayer(root_layer));
@@ -1508,7 +1527,8 @@ void LayerTreeHostCommon::CalculateDrawProperties(
page_scale_factor,
can_use_lcd_text,
&total_drawable_content_rect,
- update_tile_priorities);
+ update_tile_priorities,
+ save_paint_properties);
enne (OOO) 2013/04/12 23:03:22 I don't think you need this. We can just always c
reveman 2013/04/12 23:41:48 Done.
// The dummy layer list should not have been used.
DCHECK_EQ(0u, dummy_layer_list.size());
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698