Bug 1406183 - Include basic layer managers in the display list dumps in layers-free mode. r?mattwoodrow draft
authorMarkus Stange <mstange@themasta.com>
Fri, 06 Oct 2017 18:34:12 -0400
changeset 678170 3b6fc113f26eb772ae7bbfa586b28693f33c0700
parent 678169 8716d95fe860e0e0c48e2ce6a6c25462753a9384
child 678171 711e3c32a09e900866b15fe0d8d679b7b22b3431
push id83835
push userbmo:mstange@themasta.com
push dateTue, 10 Oct 2017 21:05:44 +0000
reviewersmattwoodrow
bugs1406183
milestone58.0a1
Bug 1406183 - Include basic layer managers in the display list dumps in layers-free mode. r?mattwoodrow MozReview-Commit-ID: 6L6w1vgNkHe
gfx/layers/wr/WebRenderCommandBuilder.cpp
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp
+++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp
@@ -11,18 +11,20 @@
 #include "mozilla/gfx/DrawEventRecorder.h"
 #include "mozilla/layers/ImageClient.h"
 #include "mozilla/layers/WebRenderBridgeChild.h"
 #include "mozilla/layers/WebRenderLayerManager.h"
 #include "mozilla/layers/IpcResourceUpdateQueue.h"
 #include "mozilla/layers/ScrollingLayersHelper.h"
 #include "mozilla/layers/StackingContextHelper.h"
 #include "mozilla/layers/UpdateImageHelper.h"
+#include "gfxEnv.h"
 #include "nsDisplayListInvalidation.h"
 #include "WebRenderCanvasRenderer.h"
+#include "LayersLogging.h"
 #include "LayerTreeInvalidation.h"
 
 namespace mozilla {
 namespace layers {
 
 void WebRenderCommandBuilder::Destroy()
 {
   mLastCanvasDatas.Clear();
@@ -370,16 +372,25 @@ PaintItemByDrawTarget(nsDisplayItem* aIt
 
         aManager->SetRoot(layer);
         layerBuilder->WillEndTransaction();
 
         static_cast<nsDisplayFilter*>(aItem)->PaintAsLayer(aDisplayListBuilder,
                                                            context, aManager);
       }
 
+#ifdef MOZ_DUMP_PAINTING
+      if (gfxUtils::DumpDisplayList() || gfxEnv::DumpPaint()) {
+        fprintf_stderr(gfxUtils::sDumpPaintFile, "Basic layer tree for painting contents of display item %s(%p):\n", aItem->Name(), aItem->Frame());
+        std::stringstream stream;
+        aManager->Dump(stream, "", gfxEnv::DumpPaintToFile());
+        fprint_stderr(gfxUtils::sDumpPaintFile, stream);  // not a typo, fprint_stderr declared in LayersLogging.h
+      }
+#endif
+
       if (aManager->InTransaction()) {
         aManager->AbortTransaction();
       }
       aManager->SetTarget(nullptr);
       break;
     }
   default:
     aItem->Paint(aDisplayListBuilder, context);