| Index: cc/layers/layer.cc
|
| diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc
|
| index 737a26103dbbf4b3a9eda03a8682d823da76c29a..dde2b37448e1388bb15c297d9884783f6f27c772 100644
|
| --- a/cc/layers/layer.cc
|
| +++ b/cc/layers/layer.cc
|
| @@ -66,6 +66,7 @@ Layer::Layer()
|
| draw_checkerboard_for_missing_tiles_(false),
|
| force_render_surface_(false),
|
| transform_is_invertible_(true),
|
| + should_have_render_surface_(false),
|
| background_color_(0),
|
| opacity_(1.f),
|
| blend_mode_(SkXfermode::kSrcOver_Mode),
|
| @@ -909,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->SetShouldHaveRenderSurface(ShouldHaveRenderSurface());
|
|
|
| LayerImpl* scroll_parent = NULL;
|
| if (scroll_parent_) {
|
| @@ -1078,18 +1080,18 @@ scoped_refptr<base::debug::ConvertableToTraceFormat> Layer::TakeDebugInfo() {
|
| }
|
|
|
| void Layer::CreateRenderSurface() {
|
| - DCHECK(!draw_properties_.render_surface);
|
| - draw_properties_.render_surface = make_scoped_ptr(new RenderSurface(this));
|
| + DCHECK(!render_surface_);
|
| + render_surface_ = make_scoped_ptr(new RenderSurface(this));
|
| draw_properties_.render_target = 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 {
|
| @@ -1242,4 +1244,20 @@ bool Layer::HasDelegatedContent() const {
|
| return false;
|
| }
|
|
|
| +void Layer::SetShouldHaveRenderSurface(bool should_have) {
|
| + if (should_have_render_surface_ == should_have)
|
| + return;
|
| + should_have_render_surface_ = should_have;
|
| + SetNeedsPushProperties();
|
| +}
|
| +
|
| +void Layer::SetRenderSurfaceActive(bool active) {
|
| + if (active) {
|
| + if (!render_surface_)
|
| + CreateRenderSurface();
|
| + return;
|
| + }
|
| + ClearRenderSurface();
|
| +}
|
| +
|
| } // namespace cc
|
|
|