Bug 1394711 - nsDisplayBackgroundImage should check layer state to create webrender commands. r=kats draft
authorEthan Lin <ethlin@mozilla.com>
Tue, 29 Aug 2017 14:51:06 +0800
changeset 654739 967438bb4a1a395f99f2a87d8c02d2ca35f7085b
parent 654738 7b3eff91a904d4bfd365293cc2a94f024c0155cb
child 728643 d7d6a2b14ecb019ecfab5e452b6c5c40a3f24f66
push id76660
push userbmo:ethlin@mozilla.com
push dateTue, 29 Aug 2017 06:52:29 +0000
reviewerskats
bugs1394711
milestone57.0a1
Bug 1394711 - nsDisplayBackgroundImage should check layer state to create webrender commands. r=kats MozReview-Commit-ID: Lr1Yfcd50iK
layout/painting/nsDisplayList.cpp
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -3592,18 +3592,21 @@ nsDisplayBackgroundImage::CanBuildWebRen
 
 bool
 nsDisplayBackgroundImage::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
                                                   const StackingContextHelper& aSc,
                                                   nsTArray<WebRenderParentCommand>& aParentCommands,
                                                   WebRenderLayerManager* aManager,
                                                   nsDisplayListBuilder* aDisplayListBuilder)
 {
-  if (!CanBuildWebRenderDisplayItems(aManager)) {
-    return false;
+  if (aManager->IsLayersFreeTransaction()) {
+    ContainerLayerParameters parameter;
+    if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
+      return false;
+    }
   }
 
   if (aDisplayListBuilder) {
     mImageFlags = aDisplayListBuilder->GetBackgroundPaintFlags();
   }
   CheckForBorderItem(this, mImageFlags);
   nsCSSRendering::PaintBGParams params =
     nsCSSRendering::PaintBGParams::ForSingleLayer(*StyleFrame()->PresContext(),