Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(651)

Unified Diff: cc/trees/layer_tree_impl.cc

Issue 1547893003: WIP - compositor worker mega patch. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_impl.cc
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 3519f293b6256ada4302075487c1362c8fd818da..3bf1907450e74ed94c57329dbdfd40133423dd69 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -45,6 +45,15 @@
namespace cc {
+namespace {
+
+const uint32_t kMainLayerFlags =
+ LayerTreeMutation::MUTATION_OPACITY | LayerTreeMutation::MUTATION_TRANSFORM;
+const uint32_t kScrollLayerFlags = LayerTreeMutation::MUTATION_SCROLL_LEFT |
+ LayerTreeMutation::MUTATION_SCROLL_TOP;
+
+} // namespace
+
LayerTreeImpl::LayerTreeImpl(
LayerTreeHostImpl* layer_tree_host_impl,
scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
@@ -359,6 +368,46 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
target_tree->has_ever_been_drawn_ = false;
}
+void LayerTreeImpl::AddToElementMap(LayerImpl* layer) {
+ TRACE_EVENT2("compositor-worker", "LayerTreeImpl::AddToElementMap",
+ "element_id", layer->element_id(), "layer_id", layer->id());
+ ElementLayers& layers = element_layers_map_[layer->element_id()];
+ if (layer->mutable_properties() & kMainLayerFlags) {
+ if (!layers.main || layer->IsActive())
+ layers.main = layer;
+ }
+ if (layer->mutable_properties() & kScrollLayerFlags) {
+ if (!layers.scroll || layer->IsActive()) {
+ TRACE_EVENT2("compositor-worker", "LayerTreeImpl::AddToElementMap scroll",
+ "element_id", layer->element_id(), "layer_id", layer->id());
+ layers.scroll = layer;
+ }
+ }
+}
+
+void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) {
+ TRACE_EVENT2("compositor-worker", "LayerTreeImpl::RemoveFromElementMap",
+ "element_id", layer->element_id(), "layer_id", layer->id());
+ ElementLayers& layers = element_layers_map_[layer->element_id()];
+ if (layer->mutable_properties() & kMainLayerFlags)
+ layers.main = nullptr;
+ if (layer->mutable_properties() & kScrollLayerFlags)
+ layers.scroll = nullptr;
+
+ if (!layers.main && !layers.scroll)
+ element_layers_map_.erase(layer->element_id());
+}
+
+bool LayerTreeImpl::GetMutableLayers(uint64_t element_id,
+ ElementLayers* element_layers) {
+ auto iter = element_layers_map_.find(element_id);
+ if (iter == element_layers_map_.end())
+ return false;
+
+ *element_layers = iter->second;
+ return true;
+}
+
LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const {
return InnerViewportScrollLayer()
? InnerViewportScrollLayer()->scroll_clip_layer()
« no previous file with comments | « cc/trees/layer_tree_impl.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698