Chromium Code Reviews| Index: cc/layers/layer_impl.cc |
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
| index 06981ea89e873c7580df6ab11bdfd875fd79efc4..e9606494dd846da160e8c2aa793bc83958a52567 100644 |
| --- a/cc/layers/layer_impl.cc |
| +++ b/cc/layers/layer_impl.cc |
| @@ -62,6 +62,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) |
| draws_content_(false), |
| hide_layer_and_subtree_(false), |
| force_render_surface_(false), |
| + transform_is_invertible_(true), |
| is_container_for_fixed_position_layers_(false), |
| is_3d_sorted_(false), |
| background_color_(0), |
| @@ -517,7 +518,7 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
| layer->SetShouldFlattenTransform(should_flatten_transform_); |
| layer->SetIs3dSorted(is_3d_sorted_); |
| layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); |
| - layer->SetTransform(transform_); |
| + layer->SetTransformAndInvertibility(transform_, transform_is_invertible_); |
| layer->SetScrollClipLayer(scroll_clip_layer_ ? scroll_clip_layer_->id() |
| : Layer::INVALID_ID); |
| @@ -995,6 +996,20 @@ void LayerImpl::SetTransform(const gfx::Transform& transform) { |
| return; |
| transform_ = transform; |
| + transform_is_invertible_ = transform_.IsInvertible(); |
| + NoteLayerPropertyChangedForSubtree(); |
| +} |
| + |
| +void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, |
| + bool transform_is_invertible) { |
| + if (transform_ == transform) { |
| + if (transform_is_invertible_ != transform_is_invertible) { |
| + DLOG(ERROR) << "Can't change invertibility if transform is unchanged"; |
|
ajuma
2014/03/28 18:49:07
How about a DCHECK instead of a DLOG?
avallee
2014/04/15 18:53:25
Done.
|
| + } |
| + return; |
| + } |
| + transform_ = transform; |
| + transform_is_invertible_ = transform_is_invertible; |
| NoteLayerPropertyChangedForSubtree(); |
| } |