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

Unified Diff: cc/trees/layer_tree_impl.h

Issue 2894673008: Refactor scrollbar maps from multimap & std::set to simpler flat_{map, set} (Closed)
Patch Set: Address vmpstr comments Created 3 years, 7 months 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
Index: cc/trees/layer_tree_impl.h
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index 46f57fda5b625c775e9c8d0bb1647948137ce6c7..ccff3c2447bfcb393ab6ae4e38a813d4c3dec2b4 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -578,13 +578,14 @@ class CC_EXPORT LayerTreeImpl {
// derived from LayerImpl::scroll_clip_layer_ and exists to avoid O(n) walks.)
std::unordered_map<int, int> clip_scroll_map_;
- // Maps scroll element ids to scrollbar layer ids. For each scroll layer,
- // there may be 1 or 2 scrollbar layers (for vertical and horizontal). (This
- // is derived from ScrollbarLayerImplBase::scroll_element_id_ and exists to
- // avoid O(n) walks.)
- // TODO(pdr): Refactor this to be more efficient--likely a map where the value
- // is a pair of scrollbar layer ids instead of using a multimap.
- std::multimap<ElementId, int> element_id_to_scrollbar_layer_ids_;
+ struct ScrollbarLayerIds {
+ int horizontal = Layer::INVALID_ID;
+ int vertical = Layer::INVALID_ID;
+ };
+ // Each scroll layer can have up to two scrollbar layers (vertical and
+ // horizontal). This mapping is maintained as part of scrollbar registration.
+ base::flat_map<ElementId, ScrollbarLayerIds>
+ element_id_to_scrollbar_layer_ids_;
std::vector<PictureLayerImpl*> picture_layers_;
LayerImplList surface_layers_;

Powered by Google App Engine
This is Rietveld 408576698