| Index: cc/layers/layer_impl.cc
|
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
|
| index b20cb3ddb105dbb1a36f437525f2d582e53e07e3..6892f39c45344ece19c7b9daf3ebd44440a2362d 100644
|
| --- a/cc/layers/layer_impl.cc
|
| +++ b/cc/layers/layer_impl.cc
|
| @@ -88,6 +88,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl,
|
| current_draw_mode_(DRAW_MODE_NONE),
|
| element_id_(0),
|
| mutable_properties_(kMutablePropertyNone),
|
| + force_render_surface_(false),
|
| num_layer_or_descendants_with_copy_request_(0),
|
| frame_timing_requests_dirty_(false),
|
| visited_(false),
|
| @@ -280,7 +281,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));
|
| @@ -573,7 +573,14 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
|
| layer->SetDoubleSided(double_sided_);
|
| layer->SetDrawsContent(DrawsContent());
|
| layer->SetHideLayerAndSubtree(hide_layer_and_subtree_);
|
| + // If whether layer has render surface changes, we need to update draw
|
| + // properties.
|
| + // TODO(weiliangc): Should be safely removed after impl side is able to
|
| + // update render surfaces without rebuilding property trees.
|
| + if (layer->has_render_surface() != has_render_surface())
|
| + layer->layer_tree_impl()->set_needs_update_draw_properties();
|
| layer->SetHasRenderSurface(!!render_surface());
|
| + layer->SetForceRenderSurface(force_render_surface_);
|
| layer->SetFilters(filters());
|
| layer->SetBackgroundFilters(background_filters());
|
| layer->SetMasksToBounds(masks_to_bounds_);
|
| @@ -1355,6 +1362,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);
|
| @@ -1799,7 +1812,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;
|
| @@ -1836,6 +1848,14 @@ gfx::Transform LayerImpl::ScreenSpaceTransform() const {
|
| return draw_properties().screen_space_transform;
|
| }
|
|
|
| +void LayerImpl::SetForceRenderSurface(bool force_render_surface) {
|
| + if (force_render_surface == force_render_surface_)
|
| + return;
|
| +
|
| + force_render_surface_ = force_render_surface;
|
| + NoteLayerPropertyChanged();
|
| +}
|
| +
|
| Region LayerImpl::GetInvalidationRegion() {
|
| return Region(update_rect_);
|
| }
|
|
|