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(); |
} |