| Index: cc/layers/layer_impl.cc
|
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
|
| index 6793d12870f89f9507dbc4ba7bd94020847b8f24..c5c759c938d830f0cdd96edbdaddce309aac5817 100644
|
| --- a/cc/layers/layer_impl.cc
|
| +++ b/cc/layers/layer_impl.cc
|
| @@ -60,7 +60,6 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id)
|
| draw_checkerboard_for_missing_tiles_(false),
|
| draws_content_(false),
|
| hide_layer_and_subtree_(false),
|
| - force_render_surface_(false),
|
| transform_is_invertible_(true),
|
| is_container_for_fixed_position_layers_(false),
|
| background_color_(0),
|
| @@ -204,7 +203,7 @@ void LayerImpl::SetClipChildren(std::set<LayerImpl*>* children) {
|
| void LayerImpl::PassCopyRequests(ScopedPtrVector<CopyOutputRequest>* requests) {
|
| if (requests->empty())
|
| return;
|
| -
|
| + DCHECK(render_surface());
|
| bool was_empty = copy_requests_.empty();
|
| copy_requests_.insert_and_take(copy_requests_.end(), requests);
|
| requests->clear();
|
| @@ -218,6 +217,7 @@ void LayerImpl::TakeCopyRequestsAndTransformToTarget(
|
| ScopedPtrVector<CopyOutputRequest>* requests) {
|
| DCHECK(!copy_requests_.empty());
|
| DCHECK(layer_tree_impl()->IsActiveTree());
|
| + DCHECK_EQ(render_target(), this);
|
|
|
| size_t first_inserted_request = requests->size();
|
| requests->insert_and_take(requests->end(), ©_requests_);
|
| @@ -238,20 +238,9 @@ void LayerImpl::TakeCopyRequestsAndTransformToTarget(
|
| layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this);
|
| }
|
|
|
| -void LayerImpl::CreateRenderSurface() {
|
| - DCHECK(!draw_properties_.render_surface);
|
| - draw_properties_.render_surface =
|
| - make_scoped_ptr(new RenderSurfaceImpl(this));
|
| - draw_properties_.render_target = this;
|
| -}
|
| -
|
| -void LayerImpl::ClearRenderSurface() {
|
| - draw_properties_.render_surface = nullptr;
|
| -}
|
| -
|
| void LayerImpl::ClearRenderSurfaceLayerList() {
|
| - if (draw_properties_.render_surface)
|
| - draw_properties_.render_surface->layer_list().clear();
|
| + if (render_surface_)
|
| + render_surface_->ClearLayerLists();
|
| }
|
|
|
| void LayerImpl::PopulateSharedQuadState(SharedQuadState* state) const {
|
| @@ -519,9 +508,9 @@ void LayerImpl::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_);
|
| + layer->SetHasRenderSurface(!!render_surface());
|
| layer->SetFilters(filters());
|
| layer->SetBackgroundFilters(background_filters());
|
| layer->SetMasksToBounds(masks_to_bounds_);
|
| @@ -740,8 +729,8 @@ void LayerImpl::ResetAllChangeTrackingForSubtree() {
|
| update_rect_ = gfx::Rect();
|
| damage_rect_ = gfx::RectF();
|
|
|
| - if (draw_properties_.render_surface)
|
| - draw_properties_.render_surface->ResetPropertyChangedFlag();
|
| + if (render_surface_)
|
| + render_surface_->ResetPropertyChangedFlag();
|
|
|
| if (mask_layer_)
|
| mask_layer_->ResetAllChangeTrackingForSubtree();
|
| @@ -1594,4 +1583,17 @@ void LayerImpl::NotifyAnimationFinished(
|
| layer_tree_impl_->InputScrollAnimationFinished();
|
| }
|
|
|
| +void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) {
|
| + if (!!render_surface() == should_have_render_surface)
|
| + return;
|
| +
|
| + SetNeedsPushProperties();
|
| + layer_tree_impl()->set_needs_update_draw_properties();
|
| + if (should_have_render_surface) {
|
| + render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this));
|
| + return;
|
| + }
|
| + render_surface_.reset();
|
| +}
|
| +
|
| } // namespace cc
|
|
|