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

Side by Side Diff: Source/core/layout/LayoutObject.cpp

Issue 1110653003: [Reland] Correct fixed-position recording for Slimming Paint (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 5 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 unified diff | Download patch | Annotate | Revision Log
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 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 1208
1209 // Not using enclosingCompositedContainer() directly because this object may be in an orphaned subtree. 1209 // Not using enclosingCompositedContainer() directly because this object may be in an orphaned subtree.
1210 if (const DeprecatedPaintLayer* enclosingLayer = this->enclosingLayer()) { 1210 if (const DeprecatedPaintLayer* enclosingLayer = this->enclosingLayer()) {
1211 // This is valid because we want to invalidate the client in the display item list of the current backing. 1211 // This is valid because we want to invalidate the client in the display item list of the current backing.
1212 DisableCompositingQueryAsserts disabler; 1212 DisableCompositingQueryAsserts disabler;
1213 if (const DeprecatedPaintLayer* paintInvalidationLayer = enclosingLayer- >enclosingLayerForPaintInvalidationCrossingFrameBoundaries()) 1213 if (const DeprecatedPaintLayer* paintInvalidationLayer = enclosingLayer- >enclosingLayerForPaintInvalidationCrossingFrameBoundaries())
1214 paintInvalidationLayer->layoutObject()->invalidateDisplayItemClientO nBacking(displayItemClient); 1214 paintInvalidationLayer->layoutObject()->invalidateDisplayItemClientO nBacking(displayItemClient);
1215 } 1215 }
1216 } 1216 }
1217 1217
1218 static void invalidateDisplayItemClientForNonCompositingDescendantsRecursive(con st LayoutBoxModelObject& paintInvalidationContainer, const LayoutObject& layoutO bject)
1219 {
1220 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(layoutObject );
1221 for (LayoutObject* child = layoutObject.slowFirstChild(); child; child = chi ld->nextSibling()) {
1222 if (!child->isPaintInvalidationContainer())
1223 invalidateDisplayItemClientForNonCompositingDescendantsRecursive(pai ntInvalidationContainer, *child);
1224 }
1225 }
1226
1227 void LayoutObject::invalidateDisplayItemClientForNonCompositingDescendants() con st
1228 {
1229 ASSERT(RuntimeEnabledFeatures::slimmingPaintEnabled());
1230
1231 // Not using enclosingCompositedContainer() directly because this object may be in an orphaned subtree.
1232 if (const DeprecatedPaintLayer* enclosingLayer = this->enclosingLayer()) {
1233 // This is valid because we want to invalidate the client in the display item list of the current backing.
1234 DisableCompositingQueryAsserts disabler;
1235 if (const DeprecatedPaintLayer* paintInvalidationLayer = enclosingLayer- >enclosingLayerForPaintInvalidationCrossingFrameBoundaries())
1236 invalidateDisplayItemClientForNonCompositingDescendantsRecursive(*pa intInvalidationLayer->layoutObject(), *this);
1237 }
1238 }
1239
1218 void LayoutObject::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const 1240 void LayoutObject::invalidateDisplayItemClients(const LayoutBoxModelObject& pain tInvalidationContainer) const
1219 { 1241 {
1220 ASSERT(RuntimeEnabledFeatures::slimmingPaintEnabled()); 1242 ASSERT(RuntimeEnabledFeatures::slimmingPaintEnabled());
1221 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*this); 1243 paintInvalidationContainer.invalidateDisplayItemClientOnBacking(*this);
1222 } 1244 }
1223 1245
1224 LayoutRect LayoutObject::boundsRectForPaintInvalidation(const LayoutBoxModelObje ct* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationS tate) const 1246 LayoutRect LayoutObject::boundsRectForPaintInvalidation(const LayoutBoxModelObje ct* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationS tate) const
1225 { 1247 {
1226 if (!paintInvalidationContainer) 1248 if (!paintInvalidationContainer)
1227 return computePaintInvalidationRect(paintInvalidationContainer, paintInv alidationState); 1249 return computePaintInvalidationRect(paintInvalidationContainer, paintInv alidationState);
(...skipping 2082 matching lines...) Expand 10 before | Expand all | Expand 10 after
3310 { 3332 {
3311 if (object1) { 3333 if (object1) {
3312 const blink::LayoutObject* root = object1; 3334 const blink::LayoutObject* root = object1;
3313 while (root->parent()) 3335 while (root->parent())
3314 root = root->parent(); 3336 root = root->parent();
3315 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3337 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3316 } 3338 }
3317 } 3339 }
3318 3340
3319 #endif 3341 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698