Chromium Code Reviews| Index: Source/core/rendering/compositing/CompositingPropertyUpdater.cpp |
| diff --git a/Source/core/rendering/compositing/CompositingPropertyUpdater.cpp b/Source/core/rendering/compositing/CompositingPropertyUpdater.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6e86d2df66216872d10ffb634c5be362c66c691f |
| --- /dev/null |
| +++ b/Source/core/rendering/compositing/CompositingPropertyUpdater.cpp |
| @@ -0,0 +1,48 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "core/rendering/compositing/CompositingPropertyUpdater.h" |
| + |
| +#include "core/rendering/RenderLayer.h" |
| + |
| +namespace WebCore { |
| + |
| +CompositingPropertyUpdater::CompositingPropertyUpdater() |
| + : m_geometryMap(UseTransforms) |
| +{ |
| +} |
| + |
| +CompositingPropertyUpdater::~CompositingPropertyUpdater() |
| +{ |
| +} |
| + |
| +void CompositingPropertyUpdater::updateAncestorDependentProperties(RenderLayer* layer, UpdateType updateType) |
| +{ |
| + if (!layer->decendantNeedsToUpdateAncestorDependentProperties() && updateType != ForceUpdate) |
| + return; |
| + |
| + m_geometryMap.pushMappingsToAncestor(layer, layer->parent()); |
| + |
| + if (layer->needsToUpdateAncestorDependentProperties()) |
| + updateType = ForceUpdate; |
| + |
| + if (updateType == ForceUpdate) { |
| + RenderLayer::AncestorDependentProperties properties; |
| + |
| + if (!layer->isRootLayer()) |
| + properties.absoluteBoundingBox = enclosingIntRect(m_geometryMap.absoluteRect(layer->overlapBounds())); |
| + |
| + layer->updateAncestorDependentProperties(properties); |
| + } |
| + |
| + for (RenderLayer* child = layer->firstChild(); child; child = child->nextSibling()) |
| + updateAncestorDependentProperties(child, updateType); |
| + |
| + layer->clearDecendantNeedsToUpdateAncestorDependentProperties(); |
|
ojan
2014/03/27 01:06:42
Nit: I'd put this line at the very end of this fun
abarth-chromium
2014/03/27 01:40:11
Ok. Maybe I should make a RAII for the geometry m
|
| + |
| + m_geometryMap.popMappingsToAncestor(layer->parent()); |
| +} |
| + |
| +} // namespace WebCore |