Chromium Code Reviews| Index: cc/layers/layer_impl.cc |
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
| index f0e85b130018485a7cbcb43f6a1bea39104bb0ea..c6bb3807250abe5e742915adad8b4ff26974b311 100644 |
| --- a/cc/layers/layer_impl.cc |
| +++ b/cc/layers/layer_impl.cc |
| @@ -85,6 +85,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, |
| num_dependents_need_push_properties_(0), |
| sorting_context_id_(0), |
| current_draw_mode_(DRAW_MODE_NONE), |
| + force_render_surface_(false), |
| num_layer_or_descendants_with_copy_request_(0), |
| frame_timing_requests_dirty_(false), |
| visited_(false), |
| @@ -277,7 +278,6 @@ void LayerImpl::PassCopyRequests( |
| if (requests->empty()) |
| return; |
| - DCHECK(render_surface()); |
| bool was_empty = copy_requests_.empty(); |
| for (auto& request : *requests) |
| copy_requests_.push_back(std::move(request)); |
| @@ -571,6 +571,7 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
| layer->SetDrawsContent(DrawsContent()); |
| layer->SetHideLayerAndSubtree(hide_layer_and_subtree_); |
| layer->SetHasRenderSurface(!!render_surface()); |
| + layer->SetForceRenderSurface(force_render_surface_); |
| layer->SetFilters(filters()); |
| layer->SetBackgroundFilters(background_filters()); |
| layer->SetMasksToBounds(masks_to_bounds_); |
| @@ -1328,6 +1329,12 @@ bool LayerImpl::HasOnlyTranslationTransforms() const { |
| observer_type); |
| } |
| +bool LayerImpl::AnimationsPreserveAxisAlignment() const { |
| + return layer_animation_controller_ |
| + ? layer_animation_controller_->AnimationsPreserveAxisAlignment() |
| + : layer_tree_impl_->AnimationsPreserveAxisAlignment(this); |
| +} |
| + |
| bool LayerImpl::MaximumTargetScale(float* max_scale) const { |
| if (!layer_animation_controller_) |
| return layer_tree_impl_->MaximumTargetScale(this, max_scale); |
| @@ -1767,7 +1774,6 @@ void LayerImpl::SetHasRenderSurface(bool 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; |
| @@ -1804,6 +1810,14 @@ gfx::Transform LayerImpl::ScreenSpaceTransform() const { |
| return draw_properties().screen_space_transform; |
| } |
| +void LayerImpl::SetForceRenderSurface(bool force_render_surface) { |
|
enne (OOO)
2015/12/02 21:59:51
I guess you need this to force the creation of a n
|
| + if (force_render_surface == force_render_surface_) |
| + return; |
| + |
| + force_render_surface_ = force_render_surface; |
| + NoteLayerPropertyChanged(); |
| +} |
| + |
| Region LayerImpl::GetInvalidationRegion() { |
| return Region(update_rect_); |
| } |