Bug 1325849 - Return LAYER_ACTIVE if AGR of a child change. draft
authorcku <cku@mozilla.com>
Tue, 27 Dec 2016 23:41:47 +0800
changeset 454065 e0278d9be6a7f9a492d1476c379fe19639d3c0c3
parent 453923 1747e26ee37ba134c34b77b8e9099ab0e2cf2fd9
child 540609 cf87ca12e20dd1c129d076a922b1eb4575fe2716
push id39822
push usercku@mozilla.com
push dateTue, 27 Dec 2016 15:46:32 +0000
bugs1325849
milestone53.0a1
Bug 1325849 - Return LAYER_ACTIVE if AGR of a child change. MozReview-Commit-ID: 4tsG66oOAzf
layout/painting/nsDisplayList.cpp
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -4576,17 +4576,17 @@ RequiredLayerStateForChildren(nsDisplayL
                               LayerManager* aManager,
                               const ContainerLayerParameters& aParameters,
                               const nsDisplayList& aList,
                               AnimatedGeometryRoot* aExpectedAnimatedGeometryRootForChildren,
                               LayerState aDefaultState = LAYER_INACTIVE)
 {
   LayerState result = aDefaultState;
   for (nsDisplayItem* i = aList.GetBottom(); i; i = i->GetAbove()) {
-    if (result == LAYER_INACTIVE &&
+    if ((result == LAYER_INACTIVE || result == LAYER_SVG_EFFECTS) &&
         i->GetAnimatedGeometryRoot() != aExpectedAnimatedGeometryRootForChildren) {
       result = LAYER_ACTIVE;
     }
 
     LayerState state = i->GetLayerState(aBuilder, aManager, aParameters);
     if (state == LAYER_ACTIVE && i->GetType() == nsDisplayItem::TYPE_BLEND_MODE) {
       // nsDisplayBlendMode always returns LAYER_ACTIVE to ensure that the
       // blending operation happens in the intermediate surface of its parent