author | Jamie Nicol <jnicol@mozilla.com> |
Fri, 27 May 2016 16:29:19 +0100 | |
changeset 340574 | 26bd1c34e1f8bc2861045e314407130a6426c711 |
parent 340573 | 9a76ad279eaa7387317d2dbdfde222f7cabcc7b1 |
child 340575 | 959b300c171e5091e8fbb4fb5a7f8fe6cbba8f0d |
push id | 1183 |
push user | raliiev@mozilla.com |
push date | Mon, 05 Sep 2016 20:01:49 +0000 |
treeherder | mozilla-release@3148731bed45 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mstange |
bugs | 1274528, 1231818 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/FrameLayerBuilder.cpp +++ b/layout/base/FrameLayerBuilder.cpp @@ -949,17 +949,16 @@ public: * created by a call out to aNewPaintedLayerCallback. */ template<typename NewPaintedLayerCallbackType> PaintedLayerData* FindPaintedLayerFor(AnimatedGeometryRoot* aAnimatedGeometryRoot, const DisplayItemScrollClip* aScrollClip, const nsIntRect& aVisibleRect, bool aForceOwnLayer, bool aBackfaceidden, - bool aAvoidCreatingNewLayer, NewPaintedLayerCallbackType aNewPaintedLayerCallback); /** * Finish everything. */ void Finish(); /** @@ -1003,22 +1002,16 @@ protected: /** * Make sure that there is a node for aAnimatedGeometryRoot and all of its * ancestor geometry roots. Return the node for aAnimatedGeometryRoot. */ PaintedLayerDataNode* EnsureNodeFor(AnimatedGeometryRoot* aAnimatedGeometryRoot); /** - * Find the node for the nearest ancestor geometry root of - * aAnimatedGeometryRoot which already exists in the tree. - */ - PaintedLayerDataNode* FindNodeForNearestAncestor(AnimatedGeometryRoot* aAnimatedGeometryRoot); - - /** * Find an existing node in the tree for an ancestor of aAnimatedGeometryRoot. * *aOutAncestorChild will be set to the last ancestor that was encountered * in the search up from aAnimatedGeometryRoot; it will be a child animated * geometry root of the result, if neither are null. */ PaintedLayerDataNode* FindNodeForAncestorAnimatedGeometryRoot(AnimatedGeometryRoot* aAnimatedGeometryRoot, AnimatedGeometryRoot** aOutAncestorChild); @@ -2819,28 +2812,21 @@ PaintedLayerDataTree::AddingOwnLayer(Ani template<typename NewPaintedLayerCallbackType> PaintedLayerData* PaintedLayerDataTree::FindPaintedLayerFor(AnimatedGeometryRoot* aAnimatedGeometryRoot, const DisplayItemScrollClip* aScrollClip, const nsIntRect& aVisibleRect, bool aForceOwnLayer, bool aBackfaceHidden, - bool aAvoidCreatingNewLayer, NewPaintedLayerCallbackType aNewPaintedLayerCallback) { const nsIntRect* bounds = aForceOwnLayer ? nullptr : &aVisibleRect; FinishPotentiallyIntersectingNodes(aAnimatedGeometryRoot, bounds); - PaintedLayerDataNode* node = nullptr; - if (aAvoidCreatingNewLayer) { - node = FindNodeForNearestAncestor(aAnimatedGeometryRoot); - } - if (!node) { - node = EnsureNodeFor(aAnimatedGeometryRoot); - } + PaintedLayerDataNode* node = EnsureNodeFor(aAnimatedGeometryRoot); if (aForceOwnLayer) { node->SetAllDrawingAbove(); } PaintedLayerData* data = node->FindPaintedLayerFor(aVisibleRect, aBackfaceHidden, aScrollClip, aNewPaintedLayerCallback); data->mExclusiveToOneItem = aForceOwnLayer; @@ -2915,31 +2901,16 @@ PaintedLayerDataTree::EnsureNodeFor(Anim MOZ_ASSERT(parentNode); node = parentNode->AddChildNodeFor(aAnimatedGeometryRoot); } MOZ_ASSERT(node); mNodes.Put(aAnimatedGeometryRoot, node); return node; } -PaintedLayerDataNode* -PaintedLayerDataTree::FindNodeForNearestAncestor(AnimatedGeometryRoot* aAnimatedGeometryRoot) -{ - if (aAnimatedGeometryRoot) { - PaintedLayerDataNode* node = mNodes.Get(aAnimatedGeometryRoot); - if (node) { - return node; - } - - return FindNodeForNearestAncestor(aAnimatedGeometryRoot->mParentAGR); - } - - return nullptr; -} - bool PaintedLayerDataTree::IsClippedWithRespectToParentAnimatedGeometryRoot(AnimatedGeometryRoot* aAnimatedGeometryRoot, nsIntRect* aOutClip) { nsIScrollableFrame* scrollableFrame = nsLayoutUtils::GetScrollableFrameFor(*aAnimatedGeometryRoot); if (!scrollableFrame) { return false; } @@ -4211,24 +4182,21 @@ ContainerState::ProcessDisplayItems(nsDi } /** * No need to allocate geometry for items that aren't * part of a PaintedLayer. */ mLayerBuilder->AddLayerDisplayItem(ownLayer, item, layerState, nullptr); } else { - bool avoidCreatingLayer = (maxLayers != -1 && layerCount >= maxLayers); PaintedLayerData* paintedLayerData = mPaintedLayerDataTree.FindPaintedLayerFor(animatedGeometryRoot, agrScrollClip, itemVisibleRect, false, item->Frame()->In3DContextAndBackfaceIsHidden(), - avoidCreatingLayer, [&]() { - layerCount++; return NewPaintedLayerData(item, animatedGeometryRoot, agrScrollClip, topLeft, clipMovesWithLayer); }); if (itemType == nsDisplayItem::TYPE_LAYER_EVENT_REGIONS) { nsDisplayLayerEventRegions* eventRegions = static_cast<nsDisplayLayerEventRegions*>(item); paintedLayerData->AccumulateEventRegions(this, eventRegions);