| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 68f8983ac937e435577800c915d7c551f3c3aaef..06be68159f30c6b4f5f5e7446f3d6c88191c3419 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -220,10 +220,11 @@ bool RenderLayer::canRender3DTransforms() const
|
|
|
| bool RenderLayer::paintsWithFilters() const
|
| {
|
| + // FIXME: Eventually there will be more factors than isComposited() to decide whether or not to render the filter
|
| if (!renderer()->hasFilter())
|
| return false;
|
|
|
| - if (compositingState() != PaintsIntoOwnBacking)
|
| + if (!isComposited())
|
| return true;
|
|
|
| if (!m_compositedLayerMapping || !m_compositedLayerMapping->canCompositeFilters())
|
| @@ -310,7 +311,7 @@ void RenderLayer::updateLayerPositions(RenderGeometryMap* geometryMap, UpdateLay
|
|
|
| // Clear the IsCompositingUpdateRoot flag once we've found the first compositing layer in this update.
|
| bool isUpdateRoot = (flags & IsCompositingUpdateRoot);
|
| - if (compositedLayerMapping())
|
| + if (isComposited())
|
| flags &= ~IsCompositingUpdateRoot;
|
|
|
| if (useRegionBasedColumns() && renderer()->isInFlowRenderFlowThread()) {
|
| @@ -324,7 +325,7 @@ void RenderLayer::updateLayerPositions(RenderGeometryMap* geometryMap, UpdateLay
|
| for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
|
| child->updateLayerPositions(geometryMap, flags);
|
|
|
| - if ((flags & UpdateCompositingLayers) && compositedLayerMapping()) {
|
| + if ((flags & UpdateCompositingLayers) && isComposited()) {
|
| CompositedLayerMapping::UpdateAfterLayoutFlags updateFlags = CompositedLayerMapping::CompositingChildrenOnly;
|
| if (flags & NeedsFullRepaintInBacking)
|
| updateFlags |= CompositedLayerMapping::NeedsFullRepaint;
|
| @@ -843,7 +844,7 @@ void RenderLayer::updatePagination()
|
| m_isPaginated = false;
|
| m_enclosingPaginationLayer = 0;
|
|
|
| - if (compositedLayerMapping() || !parent())
|
| + if (isComposited() || !parent())
|
| return; // FIXME: We will have to deal with paginated compositing layers someday.
|
| // FIXME: For now the RenderView can't be paginated. Eventually printing will move to a model where it is though.
|
|
|
| @@ -1194,7 +1195,7 @@ bool RenderLayer::updateLayerPosition()
|
| localPoint += offset;
|
| }
|
| } else if (parent()) {
|
| - if (compositedLayerMapping()) {
|
| + if (isComposited()) {
|
| // FIXME: Composited layers ignore pagination, so about the best we can do is make sure they're offset into the appropriate column.
|
| // They won't split across columns properly.
|
| LayoutSize columnOffset;
|
| @@ -1324,17 +1325,13 @@ static inline const RenderLayer* compositingContainer(const RenderLayer* layer)
|
| return layer->isNormalFlowOnly() ? layer->parent() : layer->ancestorStackingContainer();
|
| }
|
|
|
| -// FIXME: having two different functions named enclosingCompositingLayer and enclosingCompositingLayerForRepaint
|
| -// is error-prone and misleading for reading code that uses these functions - especially compounded with
|
| -// the includeSelf option. It is very likely that some call sites of this function actually mean to use
|
| -// enclosingCompositingLayerForRepaint().
|
| RenderLayer* RenderLayer::enclosingCompositingLayer(bool includeSelf) const
|
| {
|
| - if (includeSelf && compositedLayerMapping())
|
| + if (includeSelf && isComposited())
|
| return const_cast<RenderLayer*>(this);
|
|
|
| for (const RenderLayer* curr = compositingContainer(this); curr; curr = compositingContainer(curr)) {
|
| - if (curr->compositedLayerMapping())
|
| + if (curr->isComposited())
|
| return const_cast<RenderLayer*>(curr);
|
| }
|
|
|
| @@ -1343,11 +1340,11 @@ RenderLayer* RenderLayer::enclosingCompositingLayer(bool includeSelf) const
|
|
|
| RenderLayer* RenderLayer::enclosingCompositingLayerForRepaint(bool includeSelf) const
|
| {
|
| - if (includeSelf && compositingState() == PaintsIntoOwnBacking)
|
| + if (includeSelf && isComposited() && !compositedLayerMapping()->paintsIntoCompositedAncestor())
|
| return const_cast<RenderLayer*>(this);
|
|
|
| for (const RenderLayer* curr = compositingContainer(this); curr; curr = compositingContainer(curr)) {
|
| - if (curr->compositingState() == PaintsIntoOwnBacking)
|
| + if (curr->isComposited() && !curr->compositedLayerMapping()->paintsIntoCompositedAncestor())
|
| return const_cast<RenderLayer*>(curr);
|
| }
|
|
|
| @@ -1385,7 +1382,7 @@ RenderLayer* RenderLayer::enclosingFilterLayer(bool includeSelf) const
|
| RenderLayer* RenderLayer::enclosingFilterRepaintLayer() const
|
| {
|
| for (const RenderLayer* curr = this; curr; curr = curr->parent()) {
|
| - if ((curr != this && curr->requiresFullLayerImageForFilters()) || curr->compositingState() == PaintsIntoOwnBacking || curr->isRootLayer())
|
| + if ((curr != this && curr->requiresFullLayerImageForFilters()) || curr->isComposited() || curr->isRootLayer())
|
| return const_cast<RenderLayer*>(curr);
|
| }
|
| return 0;
|
| @@ -1416,7 +1413,7 @@ void RenderLayer::setFilterBackendNeedsRepaintingInRect(const LayoutRect& rect)
|
| FloatQuad repaintQuad(rectForRepaint);
|
| LayoutRect parentLayerRect = renderer()->localToContainerQuad(repaintQuad, parentLayer->renderer()).enclosingBoundingBox();
|
|
|
| - if (parentLayer->compositedLayerMapping()) {
|
| + if (parentLayer->isComposited()) {
|
| parentLayer->setBackingNeedsRepaintInRect(parentLayerRect);
|
| return;
|
| }
|
| @@ -1447,7 +1444,7 @@ bool RenderLayer::hasAncestorWithFilterOutsets() const
|
|
|
| RenderLayer* RenderLayer::clippingRootForPainting() const
|
| {
|
| - if (compositedLayerMapping())
|
| + if (isComposited())
|
| return const_cast<RenderLayer*>(this);
|
|
|
| const RenderLayer* current = this;
|
| @@ -1458,7 +1455,7 @@ RenderLayer* RenderLayer::clippingRootForPainting() const
|
| current = compositingContainer(current);
|
| ASSERT(current);
|
| if (current->transform()
|
| - || (current->compositingState() == PaintsIntoOwnBacking)
|
| + || (current->isComposited() && !current->compositedLayerMapping()->paintsIntoCompositedAncestor())
|
| )
|
| return const_cast<RenderLayer*>(current);
|
| }
|
| @@ -1493,11 +1490,11 @@ bool RenderLayer::isTransparent() const
|
|
|
| RenderLayer* RenderLayer::transparentPaintingAncestor()
|
| {
|
| - if (compositedLayerMapping())
|
| + if (isComposited())
|
| return 0;
|
|
|
| for (RenderLayer* curr = parent(); curr; curr = curr->parent()) {
|
| - if (curr->compositedLayerMapping())
|
| + if (curr->isComposited())
|
| return 0;
|
| if (curr->isTransparent())
|
| return curr;
|
| @@ -1946,7 +1943,7 @@ bool RenderLayer::usesCompositedScrolling() const
|
| if (box && (box->isIntristicallyScrollable(VerticalScrollbar) || box->isIntristicallyScrollable(HorizontalScrollbar)))
|
| return false;
|
|
|
| - return compositedLayerMapping() && compositedLayerMapping()->scrollingLayer();
|
| + return isComposited() && compositedLayerMapping()->scrollingLayer();
|
| }
|
|
|
| bool RenderLayer::adjustForForceCompositedScrollingMode(bool value) const
|
| @@ -2581,7 +2578,7 @@ static bool paintForFixedRootBackground(const RenderLayer* layer, RenderLayer::P
|
|
|
| void RenderLayer::paintLayer(GraphicsContext* context, const LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags)
|
| {
|
| - if (compositingState() != NotComposited) {
|
| + if (isComposited()) {
|
| // The updatingControlTints() painting pass goes through compositing layers,
|
| // but we need to ensure that we don't cache clip rects computed with the wrong root in this case.
|
| if (context->updatingControlTints() || (paintingInfo.paintBehavior & PaintBehaviorFlattenCompositingLayers)) {
|
| @@ -4387,7 +4384,7 @@ IntRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, cons
|
| const_cast<RenderLayer*>(this)->updateLayerListsIfNeeded();
|
|
|
| if (RenderLayer* reflection = reflectionLayer()) {
|
| - if (!reflection->compositedLayerMapping()) {
|
| + if (!reflection->isComposited()) {
|
| IntRect childUnionBounds = reflection->calculateLayerBounds(this, 0, descendantFlags);
|
| unionBounds.unite(childUnionBounds);
|
| }
|
| @@ -4399,14 +4396,11 @@ IntRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, cons
|
| LayerListMutationDetector mutationChecker(const_cast<RenderLayer*>(this));
|
| #endif
|
|
|
| - // FIXME: Descendants that are composited should not necessarily be skipped, if they don't paint into their own
|
| - // separate backing. Instead, they ought to contribute to the bounds of the layer we're trying to compute.
|
| - // This applies to all z-order lists below.
|
| if (Vector<RenderLayer*>* negZOrderList = this->negZOrderList()) {
|
| size_t listSize = negZOrderList->size();
|
| for (size_t i = 0; i < listSize; ++i) {
|
| RenderLayer* curLayer = negZOrderList->at(i);
|
| - if (flags & IncludeCompositedDescendants || !curLayer->compositedLayerMapping()) {
|
| + if (flags & IncludeCompositedDescendants || !curLayer->isComposited()) {
|
| IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags);
|
| unionBounds.unite(childUnionBounds);
|
| }
|
| @@ -4417,7 +4411,7 @@ IntRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, cons
|
| size_t listSize = posZOrderList->size();
|
| for (size_t i = 0; i < listSize; ++i) {
|
| RenderLayer* curLayer = posZOrderList->at(i);
|
| - if (flags & IncludeCompositedDescendants || !curLayer->compositedLayerMapping()) {
|
| + if (flags & IncludeCompositedDescendants || !curLayer->isComposited()) {
|
| IntRect childUnionBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags);
|
| unionBounds.unite(childUnionBounds);
|
| }
|
| @@ -4428,7 +4422,7 @@ IntRect RenderLayer::calculateLayerBounds(const RenderLayer* ancestorLayer, cons
|
| size_t listSize = normalFlowList->size();
|
| for (size_t i = 0; i < listSize; ++i) {
|
| RenderLayer* curLayer = normalFlowList->at(i);
|
| - if (flags & IncludeCompositedDescendants || !curLayer->compositedLayerMapping()) {
|
| + if (flags & IncludeCompositedDescendants || !curLayer->isComposited()) {
|
| IntRect curAbsBounds = curLayer->calculateLayerBounds(this, 0, descendantFlags);
|
| unionBounds.unite(curAbsBounds);
|
| }
|
| @@ -4481,21 +4475,6 @@ void RenderLayer::clearClipRects(ClipRectsType typeToClear)
|
| }
|
| }
|
|
|
| -CompositingState RenderLayer::compositingState() const
|
| -{
|
| - // This is computed procedurally so there is no redundant state variable that
|
| - // can get out of sync from the real actual compositing state.
|
| -
|
| - if (!m_compositedLayerMapping)
|
| - return NotComposited;
|
| -
|
| - if (m_compositedLayerMapping && compositedLayerMapping()->paintsIntoCompositedAncestor())
|
| - return HasOwnBackingButPaintsIntoAncestor;
|
| -
|
| - ASSERT(m_compositedLayerMapping);
|
| - return PaintsIntoOwnBacking;
|
| -}
|
| -
|
| CompositedLayerMapping* RenderLayer::ensureCompositedLayerMapping()
|
| {
|
| if (!m_compositedLayerMapping) {
|
| @@ -4542,7 +4521,7 @@ GraphicsLayer* RenderLayer::layerForScrollChild() const
|
|
|
| bool RenderLayer::paintsWithTransform(PaintBehavior paintBehavior) const
|
| {
|
| - return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayers) || compositingState() != PaintsIntoOwnBacking);
|
| + return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayers) || !isComposited());
|
| }
|
|
|
| bool RenderLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const
|
| @@ -4593,7 +4572,7 @@ bool RenderLayer::listBackgroundIsKnownToBeOpaqueInRect(const Vector<RenderLayer
|
|
|
| for (Vector<RenderLayer*>::const_reverse_iterator iter = list->rbegin(); iter != list->rend(); ++iter) {
|
| const RenderLayer* childLayer = *iter;
|
| - if (childLayer->compositedLayerMapping())
|
| + if (childLayer->isComposited())
|
| continue;
|
|
|
| if (!childLayer->canUseConvertToLayerCoords())
|
| @@ -4850,7 +4829,7 @@ void RenderLayer::repaintIncludingDescendants()
|
|
|
| void RenderLayer::setBackingNeedsRepaint()
|
| {
|
| - ASSERT(compositedLayerMapping());
|
| + ASSERT(isComposited());
|
| compositedLayerMapping()->setContentsNeedDisplay();
|
| }
|
|
|
| @@ -4858,8 +4837,8 @@ void RenderLayer::setBackingNeedsRepaintInRect(const LayoutRect& r)
|
| {
|
| // https://bugs.webkit.org/show_bug.cgi?id=61159 describes an unreproducible crash here,
|
| // so assert but check that the layer is composited.
|
| - ASSERT(compositedLayerMapping());
|
| - if (!compositedLayerMapping()) {
|
| + ASSERT(isComposited());
|
| + if (!isComposited()) {
|
| // If we're trying to repaint the placeholder document layer, propagate the
|
| // repaint to the native view system.
|
| LayoutRect absRect(r);
|
| @@ -5076,7 +5055,7 @@ inline bool RenderLayer::needsCompositingLayersRebuiltForClip(const RenderStyle*
|
| inline bool RenderLayer::needsCompositingLayersRebuiltForOverflow(const RenderStyle* oldStyle, const RenderStyle* newStyle) const
|
| {
|
| ASSERT(newStyle);
|
| - return !compositedLayerMapping() && oldStyle && (oldStyle->overflowX() != newStyle->overflowX()) && ancestorStackingContainer()->hasCompositingDescendant();
|
| + return !isComposited() && oldStyle && (oldStyle->overflowX() != newStyle->overflowX()) && ancestorStackingContainer()->hasCompositingDescendant();
|
| }
|
|
|
| inline bool RenderLayer::needsCompositingLayersRebuiltForFilters(const RenderStyle* oldStyle, const RenderStyle* newStyle, bool didPaintWithFilters) const
|
| @@ -5120,7 +5099,7 @@ void RenderLayer::updateFilters(const RenderStyle* oldStyle, const RenderStyle*
|
| updateOrRemoveFilterClients();
|
| // During an accelerated animation, both WebKit and the compositor animate properties.
|
| // However, WebKit shouldn't ask the compositor to update its filters if the compositor is performing the animation.
|
| - bool shouldUpdateFilters = compositedLayerMapping() && !renderer()->animation()->isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyWebkitFilter);
|
| + bool shouldUpdateFilters = isComposited() && !renderer()->animation()->isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyWebkitFilter);
|
| if (shouldUpdateFilters)
|
| compositedLayerMapping()->updateFilters(renderer()->style());
|
| updateOrRemoveFilterEffectRenderer();
|
| @@ -5166,7 +5145,7 @@ void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
|
| || needsCompositingLayersRebuiltForOverflow(oldStyle, newStyle)
|
| || needsCompositingLayersRebuiltForFilters(oldStyle, newStyle, didPaintWithFilters))
|
| compositor()->setCompositingLayersNeedRebuild();
|
| - else if (compositedLayerMapping())
|
| + else if (isComposited())
|
| compositedLayerMapping()->updateGraphicsLayerGeometry();
|
| }
|
|
|
|
|