Index: cc/trees/tree_synchronizer.cc |
diff --git a/cc/trees/tree_synchronizer.cc b/cc/trees/tree_synchronizer.cc |
index 87efee06cab3859b3382d1fbd7e7c8d6e07037b5..ede919e155a7f031ae00ecb6e10818e7019f0da2 100644 |
--- a/cc/trees/tree_synchronizer.cc |
+++ b/cc/trees/tree_synchronizer.cc |
@@ -35,6 +35,13 @@ void SynchronizeTreesInternal(LayerTreeType* source_tree, |
PushLayerList(&old_layer_map, source_tree, tree_impl); |
+ // We also push hidden surface layer ids as they maybe needed to handle copy |
+ // requests on surfaces. |
+ tree_impl->ClearHiddenSurfaceLayerIds(); |
enne (OOO)
2017/05/19 22:27:05
This seems like something that should happen as a
jaydasika
2017/05/23 00:25:14
Done.
|
+ tree_impl->SetHiddenSurfaceLayerIds(source_tree->HiddenSurfaceLayerIds()); |
+ // Reset for next update. |
+ source_tree->ClearHiddenSurfaceLayerIds(); |
+ |
for (int id : property_trees->effect_tree.mask_layer_ids()) { |
std::unique_ptr<LayerImpl> layer_impl(ReuseOrCreateLayerImpl( |
&old_layer_map, source_tree->LayerById(id), tree_impl)); |
@@ -93,26 +100,35 @@ static bool LayerHasValidPropertyTreeIndices(LayerImpl* layer) { |
} |
#endif |
+static bool IsHidden(Layer* layer) { |
+ return layer->is_hidden(); |
+} |
+ |
+static bool IsHidden(LayerImpl* layer) { |
+ return false; |
+} |
+ |
template <typename LayerTreeType> |
void PushLayerList(OwnedLayerImplMap* old_layers, |
LayerTreeType* host, |
LayerTreeImpl* tree_impl) { |
tree_impl->ClearLayerList(); |
for (auto* layer : *host) { |
- std::unique_ptr<LayerImpl> layer_impl( |
- ReuseOrCreateLayerImpl(old_layers, layer, tree_impl)); |
+ if (!IsHidden(layer)) { |
enne (OOO)
2017/05/19 22:27:05
I'm not sure if this needs to be done in this patc
jaydasika
2017/05/23 00:25:14
Acknowledged.
|
+ std::unique_ptr<LayerImpl> layer_impl( |
+ ReuseOrCreateLayerImpl(old_layers, layer, tree_impl)); |
#if DCHECK_IS_ON() |
- // Every layer should have valid property tree indices |
- AssertValidPropertyTreeIndices(layer); |
- // Every layer_impl should either have valid property tree indices already |
- // or the corresponding layer should push them onto layer_impl. |
- DCHECK(LayerHasValidPropertyTreeIndices(layer_impl.get()) || |
- host->LayerNeedsPushPropertiesForTesting(layer)); |
+ // Every layer should have valid property tree indices |
+ AssertValidPropertyTreeIndices(layer); |
+ // Every layer_impl should either have valid property tree indices already |
+ // or the corresponding layer should push them onto layer_impl. |
+ DCHECK(LayerHasValidPropertyTreeIndices(layer_impl.get()) || |
+ host->LayerNeedsPushPropertiesForTesting(layer)); |
#endif |
- |
- tree_impl->AddToLayerList(layer_impl.get()); |
- tree_impl->AddLayer(std::move(layer_impl)); |
+ tree_impl->AddToLayerList(layer_impl.get()); |
+ tree_impl->AddLayer(std::move(layer_impl)); |
+ } |
} |
tree_impl->OnCanDrawStateChangedForTree(); |
} |
@@ -122,9 +138,11 @@ static void PushLayerPropertiesInternal( |
std::unordered_set<LayerType*> layers_that_should_push_properties, |
LayerTreeImpl* impl_tree) { |
for (auto layer : layers_that_should_push_properties) { |
- LayerImpl* layer_impl = impl_tree->LayerById(layer->id()); |
- DCHECK(layer_impl); |
- layer->PushPropertiesTo(layer_impl); |
+ if (!IsHidden(layer)) { |
enne (OOO)
2017/05/19 22:27:05
Maybe setting IsHidden should just SetNeedsCommit
jaydasika
2017/05/23 00:25:14
I will remove SetNeedsPushProperties from Layer::S
|
+ LayerImpl* layer_impl = impl_tree->LayerById(layer->id()); |
+ DCHECK(layer_impl); |
+ layer->PushPropertiesTo(layer_impl); |
+ } |
} |
} |