Chromium Code Reviews| Index: cc/layers/layer_impl.cc |
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
| index a99ede899fca62e89af1d22c636500cca24a081a..c2ac198d69de82708f689368b408733a818d959b 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(render_target() == this); |
| size_t first_inserted_request = requests->size(); |
| requests->insert_and_take(requests->end(), ©_requests_); |
| @@ -238,20 +238,8 @@ 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_->layer_list().clear(); |
|
enne (OOO)
2014/12/15 22:46:51
Did git cl format do this? It doesn't seem to do
awoloszyn
2014/12/16 15:50:44
Yes, it made a couple changes like this, that I fi
danakj
2014/12/16 16:06:43
If you do reject any formatting, please file a bug
enne (OOO)
2014/12/16 17:21:01
As danakj says, change them back, file a bug. I d
|
| } |
| void LayerImpl::PopulateSharedQuadState(SharedQuadState* state) const { |
| @@ -519,9 +507,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_); |
| @@ -739,8 +727,7 @@ 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(); |
| @@ -1595,4 +1582,16 @@ 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 |