diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-16 14:56:46 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-16 14:57:30 +0200 |
commit | b297e0fa5c217c9467033b7c8b46891a52870120 (patch) | |
tree | 43fc14689295e9e64f2719d05aad94e3049f6cd7 /Source/WebCore/rendering/RenderLayerModelObject.cpp | |
parent | 69d517dbfa69903d8593cc1737f0474b21e3251e (diff) | |
download | qtwebkit-b297e0fa5c217c9467033b7c8b46891a52870120.tar.gz |
Revert "Imported WebKit commit 0dc6cd75e1d4836eaffbb520be96fac4847cc9d2 (http://svn.webkit.org/repository/webkit/trunk@131300)"
This reverts commit 5466563f4b5b6b86523e3f89bb7f77e5b5270c78.
Caused OOM issues on some CI machines :(
Diffstat (limited to 'Source/WebCore/rendering/RenderLayerModelObject.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderLayerModelObject.cpp | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/Source/WebCore/rendering/RenderLayerModelObject.cpp b/Source/WebCore/rendering/RenderLayerModelObject.cpp deleted file mode 100644 index aeb32b7a2..000000000 --- a/Source/WebCore/rendering/RenderLayerModelObject.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (C) 1999 Lars Knoll (knoll@kde.org) - * (C) 1999 Antti Koivisto (koivisto@kde.org) - * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) - * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) - * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. - * Copyright (C) 2010, 2012 Google Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "config.h" -#include "RenderLayerModelObject.h" - -#include "RenderLayer.h" -#include "RenderView.h" - -using namespace std; - -namespace WebCore { - -bool RenderLayerModelObject::s_wasFloating = false; -bool RenderLayerModelObject::s_hadLayer = false; -bool RenderLayerModelObject::s_hadTransform = false; -bool RenderLayerModelObject::s_layerWasSelfPainting = false; - -RenderLayerModelObject::RenderLayerModelObject(Node* node) - : RenderObject(node) - , m_layer(0) -{ -} - -RenderLayerModelObject::~RenderLayerModelObject() -{ - // Our layer should have been destroyed and cleared by now - ASSERT(!hasLayer()); - ASSERT(!m_layer); -} - -void RenderLayerModelObject::destroyLayer() -{ - ASSERT(!hasLayer()); // Callers should have already called setHasLayer(false) - ASSERT(m_layer); - m_layer->destroy(renderArena()); - m_layer = 0; -} - -void RenderLayerModelObject::ensureLayer() -{ - if (m_layer) - return; - - m_layer = new (renderArena()) RenderLayer(this); - setHasLayer(true); - m_layer->insertOnlyThisLayer(); -} - -bool RenderLayerModelObject::hasSelfPaintingLayer() const -{ - return m_layer && m_layer->isSelfPaintingLayer(); -} - -void RenderLayerModelObject::willBeDestroyed() -{ - // RenderObject::willBeDestroyed calls back to destroyLayer() for layer destruction - RenderObject::willBeDestroyed(); -} - -void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle) -{ - s_wasFloating = isFloating(); - s_hadLayer = hasLayer(); - s_hadTransform = hasTransform(); - if (s_hadLayer) - s_layerWasSelfPainting = layer()->isSelfPaintingLayer(); - - // If our z-index changes value or our visibility changes, - // we need to dirty our stacking context's z-order list. - RenderStyle* oldStyle = style(); - if (oldStyle && newStyle) { - if (parent()) { - // Do a repaint with the old style first, e.g., for example if we go from - // having an outline to not having an outline. - if (diff == StyleDifferenceRepaintLayer) { - layer()->repaintIncludingDescendants(); - if (!(oldStyle->clip() == newStyle->clip())) - layer()->clearClipRectsIncludingDescendants(); - } else if (diff == StyleDifferenceRepaint || newStyle->outlineSize() < oldStyle->outlineSize()) - repaint(); - } - - if (diff == StyleDifferenceLayout || diff == StyleDifferenceSimplifiedLayout) { - // When a layout hint happens, we go ahead and do a repaint of the layer, since the layer could - // end up being destroyed. - if (hasLayer()) { - if (oldStyle->position() != newStyle->position() - || oldStyle->zIndex() != newStyle->zIndex() - || oldStyle->hasAutoZIndex() != newStyle->hasAutoZIndex() - || !(oldStyle->clip() == newStyle->clip()) - || oldStyle->hasClip() != newStyle->hasClip() - || oldStyle->opacity() != newStyle->opacity() - || oldStyle->transform() != newStyle->transform() -#if ENABLE(CSS_FILTERS) - || oldStyle->filter() != newStyle->filter() -#endif - ) - layer()->repaintIncludingDescendants(); - } else if (newStyle->hasTransform() || newStyle->opacity() < 1 || newStyle->hasFilter()) { - // If we don't have a layer yet, but we are going to get one because of transform or opacity, - // then we need to repaint the old position of the object. - repaint(); - } - } - } - - RenderObject::styleWillChange(diff, newStyle); -} - -void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) -{ - RenderObject::styleDidChange(diff, oldStyle); - updateFromStyle(); - - if (requiresLayer()) { - if (!layer() && layerCreationAllowedForSubtree()) { - if (s_wasFloating && isFloating()) - setChildNeedsLayout(true); - ensureLayer(); - if (parent() && !needsLayout() && containingBlock()) { - layer()->setRepaintStatus(NeedsFullRepaint); - // There is only one layer to update, it is not worth using |cachedOffset| since - // we are not sure the value will be used. - layer()->updateLayerPositions(0); - } - } - } else if (layer() && layer()->parent()) { - setHasTransform(false); // Either a transform wasn't specified or the object doesn't support transforms, so just null out the bit. - setHasReflection(false); - layer()->removeOnlyThisLayer(); // calls destroyLayer() which clears m_layer - if (s_wasFloating && isFloating()) - setChildNeedsLayout(true); - if (s_hadTransform) - setNeedsLayoutAndPrefWidthsRecalc(); - } - - if (layer()) { - layer()->styleChanged(diff, oldStyle); - if (s_hadLayer && layer()->isSelfPaintingLayer() != s_layerWasSelfPainting) - setChildNeedsLayout(true); - } - - if (FrameView *frameView = view()->frameView()) { - bool newStyleIsViewportConstained = style()->hasViewportConstrainedPosition(); - bool oldStyleIsViewportConstrained = oldStyle && oldStyle->hasViewportConstrainedPosition(); - if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) { - if (newStyleIsViewportConstained && layer()) - frameView->addViewportConstrainedObject(this); - else - frameView->removeViewportConstrainedObject(this); - } - } -} - -} // namespace WebCore - |