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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/compositing/PropertyTreeManager.cpp

Issue 2643203002: Rewrite blink->cc scroll offset logic for SPV2 (Closed)
Patch Set: Move code back under updateScrollOffset Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/compositing/PropertyTreeManager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/graphics/compositing/PropertyTreeManager.h" 5 #include "platform/graphics/compositing/PropertyTreeManager.h"
6 6
7 #include "cc/layers/layer.h" 7 #include "cc/layers/layer.h"
8 #include "cc/trees/clip_node.h" 8 #include "cc/trees/clip_node.h"
9 #include "cc/trees/effect_node.h" 9 #include "cc/trees/effect_node.h"
10 #include "cc/trees/property_tree.h" 10 #include "cc/trees/property_tree.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 m_propertyTrees.element_id_to_scroll_node_index[compositorElementId] = id; 274 m_propertyTrees.element_id_to_scroll_node_index[compositorElementId] = id;
275 } 275 }
276 276
277 auto result = m_scrollNodeMap.set(scrollNode, id); 277 auto result = m_scrollNodeMap.set(scrollNode, id);
278 DCHECK(result.isNewEntry); 278 DCHECK(result.isNewEntry);
279 scrollTree().set_needs_update(true); 279 scrollTree().set_needs_update(true);
280 280
281 return id; 281 return id;
282 } 282 }
283 283
284 void PropertyTreeManager::updateScrollOffset(int layerId, int scrollId) { 284 void PropertyTreeManager::updateScrollOffset(
285 cc::ScrollNode& scrollNode = *scrollTree().Node(scrollId); 285 const ScrollPaintPropertyNode* scrollNode) {
286 cc::TransformNode& transformNode = 286 int scrollNodeId = ensureCompositorScrollNode(scrollNode);
287 *transformTree().Node(scrollNode.transform_id); 287 cc::ScrollNode& compositorScrollNode = *scrollTree().Node(scrollNodeId);
288 288 cc::TransformNode& compositorTransformNode =
289 transformNode.scrolls = true; 289 *transformTree().Node(compositorScrollNode.transform_id);
290 290
291 // Blink creates a 2d transform node just for scroll offset whereas cc's 291 // Blink creates a 2d transform node just for scroll offset whereas cc's
292 // transform node has a special scroll offset field. To handle this we 292 // transform node has a special scroll offset field. To handle this we adjust
293 // adjust cc's transform node to remove the 2d scroll translation and 293 // cc's transform node to remove the 2d scroll translation and instead set the
294 // let the cc scroll tree update the cc scroll offset. 294 // scroll_offset field.
295 DCHECK(transformNode.local.IsIdentityOr2DTranslation()); 295 auto* scrollOffsetTransform = scrollNode->scrollOffsetTranslation();
296 auto offset = transformNode.local.To2dTranslation(); 296 auto scrollOffsetSize = scrollOffsetTransform->matrix().to2DTranslation();
297 transformNode.local.MakeIdentity(); 297 auto scrollOffset =
298 scrollTree().SetScrollOffset(layerId, 298 gfx::ScrollOffset(-scrollOffsetSize.width(), -scrollOffsetSize.height());
299 gfx::ScrollOffset(-offset.x(), -offset.y())); 299 DCHECK(compositorTransformNode.local.IsIdentityOr2DTranslation());
300 scrollTree().set_needs_update(true); 300 compositorTransformNode.scroll_offset = scrollOffset;
301 compositorTransformNode.local.MakeIdentity();
302 compositorTransformNode.scrolls = true;
303 transformTree().set_needs_update(true);
304 // TODO(pdr): The scroll tree's scroll offset will need to be set here.
301 } 305 }
302 306
303 int PropertyTreeManager::switchToEffectNode( 307 int PropertyTreeManager::switchToEffectNode(
304 const EffectPaintPropertyNode& nextEffect) { 308 const EffectPaintPropertyNode& nextEffect) {
305 const EffectPaintPropertyNode* ancestor = 309 const EffectPaintPropertyNode* ancestor =
306 GeometryMapper::lowestCommonAncestor(currentEffectNode(), &nextEffect); 310 GeometryMapper::lowestCommonAncestor(currentEffectNode(), &nextEffect);
307 DCHECK(ancestor) << "Malformed effect tree. All nodes must be descendant of " 311 DCHECK(ancestor) << "Malformed effect tree. All nodes must be descendant of "
308 "EffectPaintPropertyNode::root()."; 312 "EffectPaintPropertyNode::root().";
309 while (currentEffectNode() != ancestor) 313 while (currentEffectNode() != ancestor)
310 m_effectStack.pop_back(); 314 m_effectStack.pop_back();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); 389 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id});
386 390
387 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); 391 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber);
388 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); 392 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId);
389 dummyLayer->SetClipTreeIndex(outputClipId); 393 dummyLayer->SetClipTreeIndex(outputClipId);
390 dummyLayer->SetEffectTreeIndex(effectNode.id); 394 dummyLayer->SetEffectTreeIndex(effectNode.id);
391 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); 395 dummyLayer->SetScrollTreeIndex(kRealRootNodeId);
392 } 396 }
393 397
394 } // namespace blink 398 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/compositing/PropertyTreeManager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698