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) 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 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 | 1194 |
1195 void LayoutObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv
alidationState) | 1195 void LayoutObject::invalidateTreeIfNeeded(const PaintInvalidationState& paintInv
alidationState) |
1196 { | 1196 { |
1197 ASSERT(!needsLayout()); | 1197 ASSERT(!needsLayout()); |
1198 | 1198 |
1199 // If we didn't need paint invalidation then our children don't need as well
. | 1199 // If we didn't need paint invalidation then our children don't need as well
. |
1200 // Skip walking down the tree as everything should be fine below us. | 1200 // Skip walking down the tree as everything should be fine below us. |
1201 if (!shouldCheckForPaintInvalidation(paintInvalidationState)) | 1201 if (!shouldCheckForPaintInvalidation(paintInvalidationState)) |
1202 return; | 1202 return; |
1203 | 1203 |
1204 invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationState.paint
InvalidationContainer()); | 1204 PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationSt
ate, paintInvalidationState.paintInvalidationContainer()); |
1205 clearPaintInvalidationState(paintInvalidationState); | 1205 if (reason != PaintInvalidationDelayedFull) { |
| 1206 clearPaintInvalidationState(paintInvalidationState); |
| 1207 } else { |
| 1208 // Mark this object as needing paint invalidation again in the next fram
e, due to the request for delayed paint invalidation. |
| 1209 setShouldDoFullPaintInvalidation(); |
| 1210 } |
| 1211 |
1206 invalidatePaintOfSubtreesIfNeeded(paintInvalidationState); | 1212 invalidatePaintOfSubtreesIfNeeded(paintInvalidationState); |
1207 } | 1213 } |
1208 | 1214 |
1209 void LayoutObject::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationStat
e& childPaintInvalidationState) | 1215 void LayoutObject::invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationStat
e& childPaintInvalidationState) |
1210 { | 1216 { |
1211 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { | 1217 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli
ng()) { |
1212 if (!child->isOutOfFlowPositioned()) | 1218 if (!child->isOutOfFlowPositioned()) |
1213 child->invalidateTreeIfNeeded(childPaintInvalidationState); | 1219 child->invalidateTreeIfNeeded(childPaintInvalidationState); |
1214 } | 1220 } |
1215 } | 1221 } |
(...skipping 1889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3105 { | 3111 { |
3106 // Only full invalidation reasons are allowed. | 3112 // Only full invalidation reasons are allowed. |
3107 ASSERT(isFullPaintInvalidationReason(reason)); | 3113 ASSERT(isFullPaintInvalidationReason(reason)); |
3108 | 3114 |
3109 if (m_bitfields.fullPaintInvalidationReason() == PaintInvalidationNone) { | 3115 if (m_bitfields.fullPaintInvalidationReason() == PaintInvalidationNone) { |
3110 if (reason == PaintInvalidationFull) | 3116 if (reason == PaintInvalidationFull) |
3111 reason = documentLifecycleBasedPaintInvalidationReason(document().li
fecycle()); | 3117 reason = documentLifecycleBasedPaintInvalidationReason(document().li
fecycle()); |
3112 m_bitfields.setFullPaintInvalidationReason(reason); | 3118 m_bitfields.setFullPaintInvalidationReason(reason); |
3113 } | 3119 } |
3114 | 3120 |
3115 ASSERT(document().lifecycle().state() != DocumentLifecycle::InPaintInvalidat
ion); | |
3116 frame()->page()->animator().scheduleVisualUpdate(); // In case that this is
called outside of FrameView::updateLayoutAndStyleForPainting(). | 3121 frame()->page()->animator().scheduleVisualUpdate(); // In case that this is
called outside of FrameView::updateLayoutAndStyleForPainting(). |
3117 markContainerChainForPaintInvalidation(); | 3122 markContainerChainForPaintInvalidation(); |
3118 } | 3123 } |
3119 | 3124 |
3120 void LayoutObject::setMayNeedPaintInvalidation() | 3125 void LayoutObject::setMayNeedPaintInvalidation() |
3121 { | 3126 { |
3122 if (mayNeedPaintInvalidation()) | 3127 if (mayNeedPaintInvalidation()) |
3123 return; | 3128 return; |
3124 m_bitfields.setMayNeedPaintInvalidation(true); | 3129 m_bitfields.setMayNeedPaintInvalidation(true); |
3125 // Make sure our parent is marked as needing invalidation. | 3130 // Make sure our parent is marked as needing invalidation. |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3221 { | 3226 { |
3222 if (object1) { | 3227 if (object1) { |
3223 const blink::LayoutObject* root = object1; | 3228 const blink::LayoutObject* root = object1; |
3224 while (root->parent()) | 3229 while (root->parent()) |
3225 root = root->parent(); | 3230 root = root->parent(); |
3226 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3231 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
3227 } | 3232 } |
3228 } | 3233 } |
3229 | 3234 |
3230 #endif | 3235 #endif |
OLD | NEW |