 Chromium Code Reviews
 Chromium Code Reviews Issue 1026823002:
  [S.P.] Don't draw frames of animated images that are offscreen  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 1026823002:
  [S.P.] Don't draw frames of animated images that are offscreen  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| OLD | NEW | 
|---|---|
| 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) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 
| 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 
| 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 
| 7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. All rights reserved. | 
| 8 * | 8 * | 
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or | 
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public | 
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 257 | 257 | 
| 258 if (!shouldCheckForPaintInvalidation(paintInvalidationState)) | 258 if (!shouldCheckForPaintInvalidation(paintInvalidationState)) | 
| 259 return; | 259 return; | 
| 260 | 260 | 
| 261 bool establishesNewPaintInvalidationContainer = isPaintInvalidationContainer (); | 261 bool establishesNewPaintInvalidationContainer = isPaintInvalidationContainer (); | 
| 262 const LayoutBoxModelObject& newPaintInvalidationContainer = *adjustComposite dContainerForSpecialAncestors(establishesNewPaintInvalidationContainer ? this : &paintInvalidationState.paintInvalidationContainer()); | 262 const LayoutBoxModelObject& newPaintInvalidationContainer = *adjustComposite dContainerForSpecialAncestors(establishesNewPaintInvalidationContainer ? this : &paintInvalidationState.paintInvalidationContainer()); | 
| 263 // FIXME: This assert should be re-enabled when we move paint invalidation t o after compositing update. crbug.com/360286 | 263 // FIXME: This assert should be re-enabled when we move paint invalidation t o after compositing update. crbug.com/360286 | 
| 264 // ASSERT(&newPaintInvalidationContainer == containerForPaintInvalidation()) ; | 264 // ASSERT(&newPaintInvalidationContainer == containerForPaintInvalidation()) ; | 
| 265 | 265 | 
| 266 PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationSt ate, newPaintInvalidationContainer); | 266 PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationSt ate, newPaintInvalidationContainer); | 
| 267 clearPaintInvalidationState(paintInvalidationState); | 267 if (reason != PaintInvalidationDelayedFull) { | 
| 268 clearPaintInvalidationState(paintInvalidationState); | |
| 269 } else { | |
| 270 // Mark this object as needing paint invalidation again in the next fram e, due to the request for delayed paint invalidation. | |
| 271 setShouldDoFullPaintInvalidation(reason); | |
| 
esprehn
2015/03/25 05:06:36
This doesn't seem right from inside the invalidate
 
chrishtr
2015/03/25 23:30:35
That's a good idea, and as you pointed out elsewhe
 | |
| 272 } | |
| 268 | 273 | 
| 269 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, new PaintInvalidationContainer); | 274 PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, new PaintInvalidationContainer); | 
| 270 if (reason == PaintInvalidationLocationChange) | 275 if (reason == PaintInvalidationLocationChange) | 
| 271 childTreeWalkState.setForceCheckForPaintInvalidation(); | 276 childTreeWalkState.setForceCheckForPaintInvalidation(); | 
| 272 invalidatePaintOfSubtreesIfNeeded(childTreeWalkState); | 277 invalidatePaintOfSubtreesIfNeeded(childTreeWalkState); | 
| 273 } | 278 } | 
| 274 | 279 | 
| 275 void LayoutBoxModelObject::setBackingNeedsPaintInvalidationInRect(const LayoutRe ct& r, PaintInvalidationReason invalidationReason) const | 280 void LayoutBoxModelObject::setBackingNeedsPaintInvalidationInRect(const LayoutRe ct& r, PaintInvalidationReason invalidationReason) const | 
| 276 { | 281 { | 
| 277 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, | 282 // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here, | 
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 876 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 881 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 
| 877 for (LayoutObject* child = startChild; child && child != endChild; ) { | 882 for (LayoutObject* child = startChild; child && child != endChild; ) { | 
| 878 // Save our next sibling as moveChildTo will clear it. | 883 // Save our next sibling as moveChildTo will clear it. | 
| 879 LayoutObject* nextSibling = child->nextSibling(); | 884 LayoutObject* nextSibling = child->nextSibling(); | 
| 880 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 885 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 
| 881 child = nextSibling; | 886 child = nextSibling; | 
| 882 } | 887 } | 
| 883 } | 888 } | 
| 884 | 889 | 
| 885 } // namespace blink | 890 } // namespace blink | 
| OLD | NEW |