Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index 63b9990d65faf0e9cb34cac442e7a2c03c44e08a..e7a524c6aa788292298c71b8e62817355046dfeb 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -67,6 +67,7 @@ Layer::Layer() |
draw_checkerboard_for_missing_tiles_(false), |
force_render_surface_(false), |
transform_is_invertible_(true), |
+ has_render_surface_(false), |
background_color_(0), |
opacity_(1.f), |
blend_mode_(SkXfermode::kSrcOver_Mode), |
@@ -876,7 +877,6 @@ void Layer::PushPropertiesTo(LayerImpl* layer) { |
layer->SetDoubleSided(double_sided_); |
layer->SetDrawCheckerboardForMissingTiles( |
draw_checkerboard_for_missing_tiles_); |
- layer->SetForceRenderSurface(force_render_surface_); |
layer->SetDrawsContent(DrawsContent()); |
layer->SetHideLayerAndSubtree(hide_layer_and_subtree_); |
if (!layer->FilterIsAnimatingOnImplOnly() && !FilterIsAnimating()) |
@@ -910,6 +910,7 @@ void Layer::PushPropertiesTo(LayerImpl* layer) { |
layer->SetScrollClipLayer(scroll_clip_layer_id_); |
layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); |
layer->set_user_scrollable_vertical(user_scrollable_vertical_); |
+ layer->SetHasRenderSurface(has_render_surface_); |
LayerImpl* scroll_parent = NULL; |
if (scroll_parent_) { |
@@ -1078,19 +1079,27 @@ scoped_refptr<base::debug::ConvertableToTraceFormat> Layer::TakeDebugInfo() { |
return NULL; |
} |
+void Layer::SetHasRenderSurface(bool has_render_surface) { |
+ if (has_render_surface_ == has_render_surface) |
+ return; |
+ has_render_surface_ = has_render_surface; |
+ // We do not need SetNeedsCommit here, since this is only ever called |
+ // during a commit, from CalculateDrawProperties. |
+ SetNeedsPushProperties(); |
+} |
+ |
void Layer::CreateRenderSurface() { |
- DCHECK(!draw_properties_.render_surface); |
- draw_properties_.render_surface = make_scoped_ptr(new RenderSurface(this)); |
- draw_properties_.render_target = this; |
+ DCHECK(!render_surface_); |
+ render_surface_ = make_scoped_ptr(new RenderSurface(this)); |
} |
void Layer::ClearRenderSurface() { |
- draw_properties_.render_surface.reset(); |
+ render_surface_.reset(); |
} |
void Layer::ClearRenderSurfaceLayerList() { |
- if (draw_properties_.render_surface) |
- draw_properties_.render_surface->layer_list().clear(); |
+ if (render_surface_) |
+ render_surface_->layer_list().clear(); |
} |
gfx::Vector2dF Layer::ScrollOffsetForAnimation() const { |