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

Side by Side Diff: Source/core/rendering/RenderLayer.cpp

Issue 321223003: Remove unused geometry map from RenderLayer::updateLayerPositionsAfterScroll (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderLayer.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 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 break; 433 break;
434 otherContainingBlock = otherContainingBlock->containingBlock(); 434 otherContainingBlock = otherContainingBlock->containingBlock();
435 } 435 }
436 436
437 return true; 437 return true;
438 } 438 }
439 439
440 void RenderLayer::updateLayerPositionsAfterDocumentScroll() 440 void RenderLayer::updateLayerPositionsAfterDocumentScroll()
441 { 441 {
442 ASSERT(this == renderer()->view()->layer()); 442 ASSERT(this == renderer()->view()->layer());
443 443 updateLayerPositionsAfterScroll();
444 RenderGeometryMap geometryMap(UseTransforms);
445 updateLayerPositionsAfterScroll(&geometryMap);
446 } 444 }
447 445
448 void RenderLayer::updateLayerPositionsAfterOverflowScroll() 446 void RenderLayer::updateLayerPositionsAfterOverflowScroll()
449 { 447 {
450 RenderGeometryMap geometryMap(UseTransforms);
451 RenderView* view = renderer()->view();
452 if (this != view->layer())
453 geometryMap.pushMappingsToAncestor(parent(), 0);
454
455 // FIXME: why is it OK to not check the ancestors of this layer in order to 448 // FIXME: why is it OK to not check the ancestors of this layer in order to
456 // initialize the HasSeenViewportConstrainedAncestor and HasSeenAncestorWith OverflowClip flags? 449 // initialize the HasSeenViewportConstrainedAncestor and HasSeenAncestorWith OverflowClip flags?
457 updateLayerPositionsAfterScroll(&geometryMap, IsOverflowScroll); 450 updateLayerPositionsAfterScroll(IsOverflowScroll);
458 } 451 }
459 452
460 void RenderLayer::updateLayerPositionsAfterScroll(RenderGeometryMap* geometryMap , UpdateLayerPositionsAfterScrollFlags flags) 453 void RenderLayer::updateLayerPositionsAfterScroll(UpdateLayerPositionsAfterScrol lFlags flags)
461 { 454 {
462 // FIXME: This shouldn't be needed, but there are some corner cases where 455 // FIXME: This shouldn't be needed, but there are some corner cases where
463 // these flags are still dirty. Update so that the check below is valid. 456 // these flags are still dirty. Update so that the check below is valid.
464 updateDescendantDependentFlags(); 457 updateDescendantDependentFlags();
465 458
466 // If we have no visible content and no visible descendants, there is no poi nt recomputing 459 // If we have no visible content and no visible descendants, there is no poi nt recomputing
467 // our rectangles as they will be empty. If our visibility changes, we are e xpected to 460 // our rectangles as they will be empty. If our visibility changes, we are e xpected to
468 // recompute all our positions anyway. 461 // recompute all our positions anyway.
469 if (subtreeIsInvisible()) 462 if (subtreeIsInvisible())
470 return; 463 return;
471 464
472 bool positionChanged = updateLayerPosition(); 465 if (updateLayerPosition())
473 if (positionChanged)
474 flags |= HasChangedAncestor; 466 flags |= HasChangedAncestor;
475 467
476 if (geometryMap)
477 geometryMap->pushMappingsToAncestor(this, parent());
478
479 if ((flags & HasChangedAncestor) || (flags & HasSeenViewportConstrainedAnces tor) || (flags & IsOverflowScroll)) 468 if ((flags & HasChangedAncestor) || (flags & HasSeenViewportConstrainedAnces tor) || (flags & IsOverflowScroll))
480 m_clipper.clearClipRects(); 469 m_clipper.clearClipRects();
481 470
482 if (renderer()->style()->hasViewportConstrainedPosition()) 471 if (renderer()->style()->hasViewportConstrainedPosition())
483 flags |= HasSeenViewportConstrainedAncestor; 472 flags |= HasSeenViewportConstrainedAncestor;
484 473
485 if (renderer()->hasOverflowClip()) 474 if (renderer()->hasOverflowClip())
486 flags |= HasSeenAncestorWithOverflowClip; 475 flags |= HasSeenAncestorWithOverflowClip;
487 476
488 if ((flags & IsOverflowScroll) && (flags & HasSeenAncestorWithOverflowClip) && !m_canSkipRepaintRectsUpdateOnScroll) { 477 if ((flags & IsOverflowScroll) && (flags & HasSeenAncestorWithOverflowClip) && !m_canSkipRepaintRectsUpdateOnScroll) {
489 // FIXME: We could track the repaint container as we walk down the tree. 478 // FIXME: We could track the repaint container as we walk down the tree.
490 repainter().computeRepaintRects(); 479 repainter().computeRepaintRects();
491 } else { 480 } else {
492 // Check that RenderLayerRepainter's cached rects are correct. 481 // Check that RenderLayerRepainter's cached rects are correct.
493 // FIXME: re-enable these assertions when the issue with table cells is resolved: https://bugs.webkit.org/show_bug.cgi?id=103432 482 // FIXME: re-enable these assertions when the issue with table cells is resolved: https://bugs.webkit.org/show_bug.cgi?id=103432
494 // ASSERT(repainter().m_repaintRect == renderer()->clippedOverflowRectFo rRepaint(renderer()->containerForRepaint())); 483 // ASSERT(repainter().m_repaintRect == renderer()->clippedOverflowRectFo rRepaint(renderer()->containerForRepaint()));
495 } 484 }
496 485
497 for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) 486 for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
498 child->updateLayerPositionsAfterScroll(geometryMap, flags); 487 child->updateLayerPositionsAfterScroll(flags);
499 488
500 // We don't update our reflection as scrolling is a translation which does n ot change the size() 489 // We don't update our reflection as scrolling is a translation which does n ot change the size()
501 // of an object, thus RenderReplica will still repaint itself properly as th e layer position was 490 // of an object, thus RenderReplica will still repaint itself properly as th e layer position was
502 // updated above. 491 // updated above.
503
504 if (geometryMap)
505 geometryMap->popMappingsToAncestor(parent());
506 } 492 }
507 493
508 void RenderLayer::updateTransform() 494 void RenderLayer::updateTransform()
509 { 495 {
510 // hasTransform() on the renderer is also true when there is transform-style : preserve-3d or perspective set, 496 // hasTransform() on the renderer is also true when there is transform-style : preserve-3d or perspective set,
511 // so check style too. 497 // so check style too.
512 bool hasTransform = renderer()->hasTransform() && renderer()->style()->hasTr ansform(); 498 bool hasTransform = renderer()->hasTransform() && renderer()->style()->hasTr ansform();
513 bool had3DTransform = has3DTransform(); 499 bool had3DTransform = has3DTransform();
514 500
515 bool hadTransform = m_transform; 501 bool hadTransform = m_transform;
(...skipping 3373 matching lines...) Expand 10 before | Expand all | Expand 10 after
3889 } 3875 }
3890 } 3876 }
3891 3877
3892 void showLayerTree(const WebCore::RenderObject* renderer) 3878 void showLayerTree(const WebCore::RenderObject* renderer)
3893 { 3879 {
3894 if (!renderer) 3880 if (!renderer)
3895 return; 3881 return;
3896 showLayerTree(renderer->enclosingLayer()); 3882 showLayerTree(renderer->enclosingLayer());
3897 } 3883 }
3898 #endif 3884 #endif
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698