Chromium Code Reviews| 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 3370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3381 object.invalidateDisplayItemClients(m_paintInvalidationContainer, Pa intInvalidationFull, invalidationRect, invalidationRect); | 3381 object.invalidateDisplayItemClients(m_paintInvalidationContainer, Pa intInvalidationFull, invalidationRect, invalidationRect); |
| 3382 } | 3382 } |
| 3383 private: | 3383 private: |
| 3384 const LayoutBoxModelObject& m_paintInvalidationContainer; | 3384 const LayoutBoxModelObject& m_paintInvalidationContainer; |
| 3385 }; | 3385 }; |
| 3386 | 3386 |
| 3387 const LayoutBoxModelObject& paintInvalidationContainer = *paintInvalidationL ayer->layoutObject(); | 3387 const LayoutBoxModelObject& paintInvalidationContainer = *paintInvalidationL ayer->layoutObject(); |
| 3388 traverseNonCompositingDescendants(const_cast<LayoutObject&>(object), Functor (paintInvalidationContainer)); | 3388 traverseNonCompositingDescendants(const_cast<LayoutObject&>(object), Functor (paintInvalidationContainer)); |
| 3389 } | 3389 } |
| 3390 | 3390 |
| 3391 void LayoutObject::invalidatePaintOfPreviousPaintInvalidationRect(const LayoutBo xModelObject& paintInvalidationContainer, PaintInvalidationReason reason) const | |
| 3392 { | |
| 3393 // These disablers are valid because we want to use the current compositing/ invalidation status. | |
| 3394 DisablePaintInvalidationStateAsserts invalidationDisabler; | |
| 3395 DisableCompositingQueryAsserts compositingDisabler; | |
| 3396 | |
| 3397 LayoutRect invalidationRect = previousPaintInvalidationRect(); | |
| 3398 adjustInvalidationRectForCompositedScrolling(invalidationRect, paintInvalida tionContainer); | |
| 3399 invalidatePaintUsingContainer(paintInvalidationContainer, invalidationRect, PaintInvalidationLayer); | |
| 3400 invalidateDisplayItemClients(paintInvalidationContainer, PaintInvalidationLa yer, invalidationRect, invalidationRect); | |
| 3401 } | |
| 3402 | |
| 3391 void LayoutObject::invalidatePaintIncludingNonCompositingDescendants() | 3403 void LayoutObject::invalidatePaintIncludingNonCompositingDescendants() |
| 3392 { | 3404 { |
| 3393 class Functor : public LayoutObjectTraversalFunctor { | 3405 class Functor : public LayoutObjectTraversalFunctor { |
| 3394 public: | 3406 public: |
| 3395 explicit Functor(const LayoutBoxModelObject& paintInvalidationContainer) : m_paintInvalidationContainer(paintInvalidationContainer) { } | 3407 explicit Functor(const LayoutBoxModelObject& paintInvalidationContainer) : m_paintInvalidationContainer(paintInvalidationContainer) { } |
| 3396 void operator()(LayoutObject& object) const override | 3408 void operator()(LayoutObject& object) const override |
| 3397 { | 3409 { |
| 3398 LayoutRect invalidationRect = object.previousPaintInvalidationRect() ; | 3410 object.invalidatePaintOfPreviousPaintInvalidationRect(m_paintInvalid ationContainer, PaintInvalidationLayer); |
| 3399 object.adjustInvalidationRectForCompositedScrolling(invalidationRect , m_paintInvalidationContainer); | 3411 object.setPreviousPaintInvalidationRect(LayoutRect()); |
| 3400 object.invalidatePaintUsingContainer(m_paintInvalidationContainer, i nvalidationRect, PaintInvalidationLayer); | |
| 3401 object.invalidateDisplayItemClients(m_paintInvalidationContainer, Pa intInvalidationLayer, invalidationRect, invalidationRect); | |
| 3402 } | 3412 } |
| 3403 private: | 3413 private: |
| 3404 const LayoutBoxModelObject& m_paintInvalidationContainer; | 3414 const LayoutBoxModelObject& m_paintInvalidationContainer; |
| 3405 }; | 3415 }; |
| 3406 | 3416 |
| 3407 // Since we're only painting non-composited layers, we know that they all sh are the same paintInvalidationContainer. | 3417 // Since we're only painting non-composited layers, we know that they all sh are the same paintInvalidationContainer. |
| 3408 const LayoutBoxModelObject& paintInvalidationContainer = containerForPaintIn validationOnRootedTree(); | 3418 const LayoutBoxModelObject& paintInvalidationContainer = containerForPaintIn validationOnRootedTree(); |
| 3409 traverseNonCompositingDescendants(*this, Functor(paintInvalidationContainer) ); | 3419 traverseNonCompositingDescendants(*this, Functor(paintInvalidationContainer) ); |
| 3410 } | 3420 } |
| 3411 | 3421 |
| 3412 // FIXME: If we had a flag to force invalidations in a whole subtree, we could g et rid of this function (crbug.com/410097). | 3422 // FIXME: If we had a flag to force invalidations in a whole subtree, we could g et rid of this function (crbug.com/410097). |
| 3413 void LayoutObject::setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants() | 3423 void LayoutObject::setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants() |
| 3414 { | 3424 { |
| 3415 class Functor : public LayoutObjectTraversalFunctor { | 3425 class Functor : public LayoutObjectTraversalFunctor { |
| 3416 public: | 3426 public: |
| 3417 void operator()(LayoutObject& object) const override | 3427 void operator()(LayoutObject& object) const override |
| 3418 { | 3428 { |
| 3419 object.setShouldDoFullPaintInvalidation(); | 3429 object.setShouldDoFullPaintInvalidation(); |
| 3420 } | 3430 } |
| 3421 }; | 3431 }; |
| 3422 | 3432 |
| 3423 // Need to access the current compositing status. | 3433 // Need to access the current compositing status. |
| 3424 DisableCompositingQueryAsserts disabler; | 3434 DisableCompositingQueryAsserts disabler; |
| 3425 traverseNonCompositingDescendants(*this, Functor()); | 3435 traverseNonCompositingDescendants(*this, Functor()); |
| 3426 } | 3436 } |
| 3427 | 3437 |
| 3438 void LayoutObject::invalidatePaintIncludingNonSelfPaintingLayerDescendants(const LayoutBoxModelObject& paintInvalidationContainer) | |
| 3439 { | |
| 3440 invalidatePaintOfPreviousPaintInvalidationRect(paintInvalidationContainer, P aintInvalidationLayer); | |
| 3441 setPreviousPaintInvalidationRect(LayoutRect()); | |
|
Xianzhu
2015/10/14 18:17:48
I removed this line (and line 3411 above) because
| |
| 3442 for (LayoutObject* child = slowFirstChild(); child; child = child->nextSibli ng()) { | |
| 3443 if (!child->hasLayer() || !toLayoutBoxModelObject(child)->layer()->isSel fPaintingLayer()) | |
|
chrishtr
2015/10/14 17:43:00
Also non-compositing right? Non-self-painting pain
Xianzhu
2015/10/14 18:17:48
I think all composited layers are self-painting, o
| |
| 3444 child->invalidatePaintIncludingNonSelfPaintingLayerDescendants(paint InvalidationContainer); | |
| 3445 } | |
| 3446 } | |
| 3447 | |
| 3428 void LayoutObject::setIsSlowRepaintObject(bool isSlowRepaintObject) | 3448 void LayoutObject::setIsSlowRepaintObject(bool isSlowRepaintObject) |
| 3429 { | 3449 { |
| 3430 ASSERT(frameView()); | 3450 ASSERT(frameView()); |
| 3431 if (m_bitfields.isSlowRepaintObject() == isSlowRepaintObject) | 3451 if (m_bitfields.isSlowRepaintObject() == isSlowRepaintObject) |
| 3432 return; | 3452 return; |
| 3433 m_bitfields.setIsSlowRepaintObject(isSlowRepaintObject); | 3453 m_bitfields.setIsSlowRepaintObject(isSlowRepaintObject); |
| 3434 if (isSlowRepaintObject) | 3454 if (isSlowRepaintObject) |
| 3435 frameView()->addSlowRepaintObject(); | 3455 frameView()->addSlowRepaintObject(); |
| 3436 else | 3456 else |
| 3437 frameView()->removeSlowRepaintObject(); | 3457 frameView()->removeSlowRepaintObject(); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 3468 const blink::LayoutObject* root = object1; | 3488 const blink::LayoutObject* root = object1; |
| 3469 while (root->parent()) | 3489 while (root->parent()) |
| 3470 root = root->parent(); | 3490 root = root->parent(); |
| 3471 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); | 3491 root->showLayoutTreeAndMark(object1, "*", object2, "-", 0); |
| 3472 } else { | 3492 } else { |
| 3473 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); | 3493 fprintf(stderr, "Cannot showLayoutTree. Root is (nil)\n"); |
| 3474 } | 3494 } |
| 3475 } | 3495 } |
| 3476 | 3496 |
| 3477 #endif | 3497 #endif |
| OLD | NEW |