diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-24 21:37:36 +0000 |
---|---|---|
committer | Bo Liu <boliu@google.com> | 2014-06-25 08:39:49 -0700 |
commit | 21f72d39fdcd06983f7460f2c2e82d9287549915 (patch) | |
tree | 49c60a0aed4eb607a133d7bac86069281a3fdb0e | |
parent | 770300fb3fec927eb702b146c92281093e917c72 (diff) | |
download | chromium_org-21f72d39fdcd06983f7460f2c2e82d9287549915.tar.gz |
Cherry-pick: cc: Update draw if external draw constraints change
Cherry-pick of chromium r279497
BUG: 15771111
Change-Id: I64ab8eb88df737ab5b9f40a6113efd9a20984c5b
-rw-r--r-- | cc/trees/layer_tree_host_impl.cc | 4 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_impl_unittest.cc | 26 |
2 files changed, 30 insertions, 0 deletions
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index c3ea500050..5417a6a031 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc @@ -1311,6 +1311,10 @@ void LayerTreeHostImpl::SetExternalDrawConstraints( const gfx::Rect& viewport, const gfx::Rect& clip, bool valid_for_tile_management) { + if (external_transform_ != transform || external_viewport_ != viewport) { + active_tree_->set_needs_update_draw_properties(); + } + external_transform_ = transform; external_viewport_ = viewport; external_clip_ = clip; diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index f415c51afe..9ada4029bb 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc @@ -6573,5 +6573,31 @@ TEST_F(LayerTreeHostImplWithImplicitLimitsTest, ImplicitMemoryLimits) { 150u * 1024u * 1024u); } +TEST_F(LayerTreeHostImplTest, ExternalTransformReflectedInNextDraw) { + const gfx::Size layer_size(100, 100); + gfx::Transform external_transform; + const gfx::Rect external_viewport(layer_size); + const gfx::Rect external_clip(layer_size); + const bool valid_for_tile_management = true; + LayerImpl* layer = SetupScrollAndContentsLayers(layer_size); + + host_impl_->SetExternalDrawConstraints(external_transform, + external_viewport, + external_clip, + valid_for_tile_management); + DrawFrame(); + EXPECT_TRANSFORMATION_MATRIX_EQ( + external_transform, layer->draw_properties().target_space_transform); + + external_transform.Translate(20, 20); + host_impl_->SetExternalDrawConstraints(external_transform, + external_viewport, + external_clip, + valid_for_tile_management); + DrawFrame(); + EXPECT_TRANSFORMATION_MATRIX_EQ( + external_transform, layer->draw_properties().target_space_transform); +} + } // namespace } // namespace cc |