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

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

Issue 1026823002: [S.P.] Don't draw frames of animated images that are offscreen (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 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/layout/LayoutObject.h ('k') | Source/core/layout/LayoutView.h » ('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 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 } 1187 }
1188 1188
1189 void LayoutObject::invalidatePaintRectangle(const LayoutRect& r) const 1189 void LayoutObject::invalidatePaintRectangle(const LayoutRect& r) const
1190 { 1190 {
1191 if (const LayoutBoxModelObject* paintInvalidationContainer = invalidatePaint RectangleInternal(r)) { 1191 if (const LayoutBoxModelObject* paintInvalidationContainer = invalidatePaint RectangleInternal(r)) {
1192 if (RuntimeEnabledFeatures::slimmingPaintEnabled()) 1192 if (RuntimeEnabledFeatures::slimmingPaintEnabled())
1193 invalidateDisplayItemClients(*paintInvalidationContainer); 1193 invalidateDisplayItemClients(*paintInvalidationContainer);
1194 } 1194 }
1195 } 1195 }
1196 1196
1197 void LayoutObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv alidationState) 1197 void LayoutObject::invalidateTreeIfNeeded(PaintInvalidationState& paintInvalidat ionState)
1198 { 1198 {
1199 ASSERT(!needsLayout()); 1199 ASSERT(!needsLayout());
1200 1200
1201 // If we didn't need paint invalidation then our children don't need as well . 1201 // If we didn't need paint invalidation then our children don't need as well .
1202 // Skip walking down the tree as everything should be fine below us. 1202 // Skip walking down the tree as everything should be fine below us.
1203 if (!shouldCheckForPaintInvalidation(paintInvalidationState)) 1203 if (!shouldCheckForPaintInvalidation(paintInvalidationState))
1204 return; 1204 return;
1205 1205
1206 invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationState.paint InvalidationContainer()); 1206 PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationSt ate, paintInvalidationState.paintInvalidationContainer());
1207 clearPaintInvalidationState(paintInvalidationState); 1207 clearPaintInvalidationState(paintInvalidationState);
1208
1209 if (reason == PaintInvalidationDelayedFull)
1210 paintInvalidationState.pushDelayedPaintInvalidationTarget(*this);
1211
1208 invalidatePaintOfSubtreesIfNeeded(paintInvalidationState); 1212 invalidatePaintOfSubtreesIfNeeded(paintInvalidationState);
1209 } 1213 }
1210 1214
1211 void LayoutObject::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationStat e& childPaintInvalidationState) 1215 void LayoutObject::invalidatePaintOfSubtreesIfNeeded(PaintInvalidationState& chi ldPaintInvalidationState)
1212 { 1216 {
1213 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli ng()) { 1217 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli ng()) {
1214 if (!child->isOutOfFlowPositioned()) 1218 if (!child->isOutOfFlowPositioned())
1215 child->invalidateTreeIfNeeded(childPaintInvalidationState); 1219 child->invalidateTreeIfNeeded(childPaintInvalidationState);
1216 } 1220 }
1217 } 1221 }
1218 1222
1219 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe cts(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect& newRect, const LayoutPoint& newLocation) 1223 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe cts(const LayoutRect& oldRect, const LayoutPoint& oldLocation, const LayoutRect& newRect, const LayoutPoint& newLocation)
1220 { 1224 {
1221 RefPtr<TracedValue> value = TracedValue::create(); 1225 RefPtr<TracedValue> value = TracedValue::create();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 1271
1268 if (RuntimeEnabledFeatures::slimmingPaintEnabled() && shouldInvalidateSelect ion()) 1272 if (RuntimeEnabledFeatures::slimmingPaintEnabled() && shouldInvalidateSelect ion())
1269 invalidateDisplayItemClients(paintInvalidationContainer); 1273 invalidateDisplayItemClients(paintInvalidationContainer);
1270 1274
1271 if (fullInvalidation) 1275 if (fullInvalidation)
1272 return; 1276 return;
1273 1277
1274 fullyInvalidatePaint(paintInvalidationContainer, PaintInvalidationSelection, oldSelectionRect, newSelectionRect); 1278 fullyInvalidatePaint(paintInvalidationContainer, PaintInvalidationSelection, oldSelectionRect, newSelectionRect);
1275 } 1279 }
1276 1280
1277 PaintInvalidationReason LayoutObject::invalidatePaintIfNeeded(const PaintInvalid ationState& paintInvalidationState, const LayoutBoxModelObject& paintInvalidatio nContainer) 1281 PaintInvalidationReason LayoutObject::invalidatePaintIfNeeded(PaintInvalidationS tate& paintInvalidationState, const LayoutBoxModelObject& paintInvalidationConta iner)
1278 { 1282 {
1279 LayoutView* v = view(); 1283 LayoutView* v = view();
1280 if (v->document().printing()) 1284 if (v->document().printing())
1281 return PaintInvalidationNone; // Don't invalidate paints if we're printi ng. 1285 return PaintInvalidationNone; // Don't invalidate paints if we're printi ng.
1282 1286
1283 const LayoutRect oldBounds = previousPaintInvalidationRect(); 1287 const LayoutRect oldBounds = previousPaintInvalidationRect();
1284 const LayoutPoint oldLocation = previousPositionFromPaintInvalidationBacking (); 1288 const LayoutPoint oldLocation = previousPositionFromPaintInvalidationBacking ();
1285 const LayoutRect newBounds = boundsRectForPaintInvalidation(&paintInvalidati onContainer, &paintInvalidationState); 1289 const LayoutRect newBounds = boundsRectForPaintInvalidation(&paintInvalidati onContainer, &paintInvalidationState);
1286 const LayoutPoint newLocation = DeprecatedPaintLayer::positionFromPaintInval idationBacking(this, &paintInvalidationContainer, &paintInvalidationState); 1290 const LayoutPoint newLocation = DeprecatedPaintLayer::positionFromPaintInval idationBacking(this, &paintInvalidationContainer, &paintInvalidationState);
1287 setPreviousPaintInvalidationRect(newBounds); 1291 setPreviousPaintInvalidationRect(newBounds);
(...skipping 1938 matching lines...) Expand 10 before | Expand all | Expand 10 after
3226 { 3230 {
3227 if (object1) { 3231 if (object1) {
3228 const blink::LayoutObject* root = object1; 3232 const blink::LayoutObject* root = object1;
3229 while (root->parent()) 3233 while (root->parent())
3230 root = root->parent(); 3234 root = root->parent();
3231 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); 3235 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0);
3232 } 3236 }
3233 } 3237 }
3234 3238
3235 #endif 3239 #endif
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutObject.h ('k') | Source/core/layout/LayoutView.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698