Bug 1495246. Only call SVGObserverUtils::UpdateEffects on FirstContinuationOrIBSplitSibling frames. r=longsonr
authorJonathan Watt <jwatt@jwatt.org>
Wed, 19 Sep 2018 11:30:03 +0100
changeset 494655 0c399277cee5d443830c19f7d28e45060a3b714f
parent 494654 87f643635a1260fd357572a3797e9e5e7daedde9
child 494656 5c8b0d630ceb6bb8601dd0ebcd53a53ee87c4318
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerslongsonr
bugs1495246
milestone64.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
Bug 1495246. Only call SVGObserverUtils::UpdateEffects on FirstContinuationOrIBSplitSibling frames. r=longsonr Differential Revision: https://phabricator.services.mozilla.com/D7244
layout/base/RestyleManager.cpp
--- a/layout/base/RestyleManager.cpp
+++ b/layout/base/RestyleManager.cpp
@@ -1582,21 +1582,19 @@ RestyleManager::ProcessRestyledFrames(ns
         // need the nsChangeHint_UpdateTransformLayer hint if we already have
         // a nsChangeHint_AddOrRemoveTransform hint, and since we
         // will fail an assertion in ApplyRenderingChangeToTree if we try
         // specify nsChangeHint_UpdateTransformLayer but don't have any
         // transform style, we just drop the unneeded hint here.
         hint &= ~nsChangeHint_UpdateTransformLayer;
       }
 
-      if (hint & nsChangeHint_UpdateEffects) {
-        for (nsIFrame* cont = frame; cont;
-             cont = nsLayoutUtils::GetNextContinuationOrIBSplitSibling(cont)) {
-          SVGObserverUtils::UpdateEffects(cont);
-        }
+      if ((hint & nsChangeHint_UpdateEffects) &&
+          frame == nsLayoutUtils::FirstContinuationOrIBSplitSibling(frame)) {
+        SVGObserverUtils::UpdateEffects(frame);
       }
       if ((hint & nsChangeHint_InvalidateRenderingObservers) ||
           ((hint & nsChangeHint_UpdateOpacityLayer) &&
            frame->IsFrameOfType(nsIFrame::eSVG) &&
            !(frame->GetStateBits() & NS_STATE_IS_OUTER_SVG))) {
         SVGObserverUtils::InvalidateRenderingObservers(frame);
         frame->SchedulePaint();
       }