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

Side by Side Diff: sky/engine/core/rendering/RenderObject.cpp

Issue 791023006: Delete invalidateTreeIfNeeded. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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 | « sky/engine/core/rendering/RenderObject.h ('k') | sky/engine/core/rendering/RenderParagraph.cpp » ('j') | 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 struct SameSizeAsRenderObject { 92 struct SameSizeAsRenderObject {
93 virtual ~SameSizeAsRenderObject() { } // Allocate vtable pointer. 93 virtual ~SameSizeAsRenderObject() { } // Allocate vtable pointer.
94 void* pointers[5]; 94 void* pointers[5];
95 #if ENABLE(ASSERT) 95 #if ENABLE(ASSERT)
96 unsigned m_debugBitfields : 2; 96 unsigned m_debugBitfields : 2;
97 #if ENABLE(OILPAN) 97 #if ENABLE(OILPAN)
98 unsigned m_oilpanBitfields : 1; 98 unsigned m_oilpanBitfields : 1;
99 #endif 99 #endif
100 #endif 100 #endif
101 unsigned m_bitfields; 101 unsigned m_bitfields;
102 unsigned m_bitfields2;
103 LayoutRect rect; // Stores the previous paint invalidation rect. 102 LayoutRect rect; // Stores the previous paint invalidation rect.
104 LayoutPoint position; // Stores the previous position from the paint invalid ation container. 103 LayoutPoint position; // Stores the previous position from the paint invalid ation container.
105 }; 104 };
106 105
107 COMPILE_ASSERT(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), RenderObj ect_should_stay_small); 106 COMPILE_ASSERT(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), RenderObj ect_should_stay_small);
108 107
109 bool RenderObject::s_affectsParentBlock = false; 108 bool RenderObject::s_affectsParentBlock = false;
110 109
111 #if !ENABLE(OILPAN) 110 #if !ENABLE(OILPAN)
112 void* RenderObject::operator new(size_t sz) 111 void* RenderObject::operator new(size_t sz)
(...skipping 1098 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 } 1210 }
1212 1211
1213 const RenderLayerModelObject* RenderObject::adjustCompositedContainerForSpecialA ncestors(const RenderLayerModelObject* paintInvalidationContainer) const 1212 const RenderLayerModelObject* RenderObject::adjustCompositedContainerForSpecialA ncestors(const RenderLayerModelObject* paintInvalidationContainer) const
1214 { 1213 {
1215 // FIXME(sky): We shouldn't have any special ancestors and we don't have com posited containers 1214 // FIXME(sky): We shouldn't have any special ancestors and we don't have com posited containers
1216 if (paintInvalidationContainer) 1215 if (paintInvalidationContainer)
1217 return paintInvalidationContainer; 1216 return paintInvalidationContainer;
1218 return view(); 1217 return view();
1219 } 1218 }
1220 1219
1221 void RenderObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv alidationState)
1222 {
1223 // If we didn't need paint invalidation then our children don't need as well .
1224 // Skip walking down the tree as everything should be fine below us.
1225 if (!shouldCheckForPaintInvalidation(paintInvalidationState))
1226 return;
1227
1228 clearPaintInvalidationState(paintInvalidationState);
1229
1230 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli ng()) {
1231 if (!child->isOutOfFlowPositioned())
1232 child->invalidateTreeIfNeeded(paintInvalidationState);
1233 }
1234 }
1235
1236 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec t* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* p aintInvalidationState) const 1220 void RenderObject::mapRectToPaintInvalidationBacking(const RenderLayerModelObjec t* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* p aintInvalidationState) const
1237 { 1221 {
1238 if (paintInvalidationContainer == this) 1222 if (paintInvalidationContainer == this)
1239 return; 1223 return;
1240 1224
1241 if (RenderObject* o = parent()) { 1225 if (RenderObject* o = parent()) {
1242 if (o->hasOverflowClip()) { 1226 if (o->hasOverflowClip()) {
1243 RenderBox* boxParent = toRenderBox(o); 1227 RenderBox* boxParent = toRenderBox(o);
1244 boxParent->applyCachedClipAndScrollOffsetForPaintInvalidation(rect); 1228 boxParent->applyCachedClipAndScrollOffsetForPaintInvalidation(rect);
1245 if (rect.isEmpty()) 1229 if (rect.isEmpty())
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1465 if (updatedDiff.needsFullLayout()) 1449 if (updatedDiff.needsFullLayout())
1466 setNeedsLayoutAndPrefWidthsRecalc(); 1450 setNeedsLayoutAndPrefWidthsRecalc();
1467 else if (updatedDiff.needsPositionedMovementLayout()) 1451 else if (updatedDiff.needsPositionedMovementLayout())
1468 setNeedsPositionedMovementLayout(); 1452 setNeedsPositionedMovementLayout();
1469 } 1453 }
1470 1454
1471 if (diff.transformChanged() && !needsLayout()) { 1455 if (diff.transformChanged() && !needsLayout()) {
1472 if (RenderBlock* container = containingBlock()) 1456 if (RenderBlock* container = containingBlock())
1473 container->setNeedsOverflowRecalcAfterStyleChange(); 1457 container->setNeedsOverflowRecalcAfterStyleChange();
1474 } 1458 }
1475
1476 if (updatedDiff.needsPaintInvalidationLayer())
1477 toRenderLayerModelObject(this)->layer()->setShouldDoFullPaintInvalidatio nIncludingNonCompositingDescendants();
1478 else if (diff.needsPaintInvalidationObject() || updatedDiff.needsPaintInvali dationObject())
1479 setShouldDoFullPaintInvalidation(true);
1480 } 1459 }
1481 1460
1482 void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle& newS tyle) 1461 void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle& newS tyle)
1483 { 1462 {
1484 if (m_style) { 1463 if (m_style) {
1485 if (isOutOfFlowPositioned() && (m_style->position() != newStyle.position ())) 1464 if (isOutOfFlowPositioned() && (m_style->position() != newStyle.position ()))
1486 // For changes in positioning styles, we need to conceivably remove ourselves 1465 // For changes in positioning styles, we need to conceivably remove ourselves
1487 // from the positioned objects list. 1466 // from the positioned objects list.
1488 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists(); 1467 toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists();
1489 1468
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 if (FrameView* frameView = renderView->frameView()) 1986 if (FrameView* frameView = renderView->frameView())
2008 frameView->scheduleRelayoutOfSubtree(this); 1987 frameView->scheduleRelayoutOfSubtree(this);
2009 } 1988 }
2010 } 1989 }
2011 } 1990 }
2012 } 1991 }
2013 1992
2014 void RenderObject::forceLayout() 1993 void RenderObject::forceLayout()
2015 { 1994 {
2016 setSelfNeedsLayout(true); 1995 setSelfNeedsLayout(true);
2017 setShouldDoFullPaintInvalidation(true);
2018 layout(); 1996 layout();
2019 } 1997 }
2020 1998
2021 // FIXME: Does this do anything different than forceLayout given that we don't w alk 1999 // FIXME: Does this do anything different than forceLayout given that we don't w alk
2022 // the containing block chain. If not, we should change all callers to use force Layout. 2000 // the containing block chain. If not, we should change all callers to use force Layout.
2023 void RenderObject::forceChildLayout() 2001 void RenderObject::forceChildLayout()
2024 { 2002 {
2025 setNormalChildNeedsLayout(true); 2003 setNormalChildNeedsLayout(true);
2026 layout(); 2004 layout();
2027 } 2005 }
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2235 { 2213 {
2236 ASSERT_NOT_REACHED(); 2214 ASSERT_NOT_REACHED();
2237 return false; 2215 return false;
2238 } 2216 }
2239 2217
2240 bool RenderObject::isRelayoutBoundaryForInspector() const 2218 bool RenderObject::isRelayoutBoundaryForInspector() const
2241 { 2219 {
2242 return objectIsRelayoutBoundary(this); 2220 return objectIsRelayoutBoundary(this);
2243 } 2221 }
2244 2222
2245 void RenderObject::setShouldDoFullPaintInvalidation(bool b, MarkingBehavior mark Behavior)
2246 {
2247 if (markBehavior == MarkContainingBlockChain && b) {
2248 ASSERT(document().lifecycle().state() != DocumentLifecycle::InPaintInval idation);
2249 // FIXME(sky): Do we still need this here?
2250 frame()->page()->animator().scheduleVisualUpdate(); // In case that this is called not during FrameView::updateLayoutAndStyleForPainting().
ojan 2015/01/12 21:14:21 This is the only potential change in behavior. I r
2251 }
2252 }
2253
2254 void RenderObject::clearPaintInvalidationState(const PaintInvalidationState& pai ntInvalidationState)
2255 {
2256 // paintInvalidationStateIsDirty should be kept in sync with the
2257 // booleans that are cleared below.
2258 ASSERT(paintInvalidationState.forceCheckForPaintInvalidation() || paintInval idationStateIsDirty());
2259 setShouldDoFullPaintInvalidation(false);
2260 setOnlyNeededPositionedMovementLayout(false);
2261 setNeededLayoutBecauseOfChildren(false);
2262 setShouldInvalidateOverflowForPaint(false);
2263 setLayoutDidGetCalled(false);
2264 }
2265
2266 bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document) 2223 bool RenderObject::isAllowedToModifyRenderTreeStructure(Document& document)
2267 { 2224 {
2268 return document.lifecycle().stateAllowsRenderTreeMutations(); 2225 return document.lifecycle().stateAllowsRenderTreeMutations();
2269 } 2226 }
2270 2227
2271 } // namespace blink 2228 } // namespace blink
2272 2229
2273 #ifndef NDEBUG 2230 #ifndef NDEBUG
2274 2231
2275 void showTree(const blink::RenderObject* object) 2232 void showTree(const blink::RenderObject* object)
(...skipping 17 matching lines...) Expand all
2293 { 2250 {
2294 if (object1) { 2251 if (object1) {
2295 const blink::RenderObject* root = object1; 2252 const blink::RenderObject* root = object1;
2296 while (root->parent()) 2253 while (root->parent())
2297 root = root->parent(); 2254 root = root->parent();
2298 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 2255 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
2299 } 2256 }
2300 } 2257 }
2301 2258
2302 #endif 2259 #endif
OLDNEW
« no previous file with comments | « sky/engine/core/rendering/RenderObject.h ('k') | sky/engine/core/rendering/RenderParagraph.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698