Bug 1403915 - Remove some leftover painting callback goop. r?jrmuizel draft
authorKartikaya Gupta <kgupta@mozilla.com>
Tue, 03 Oct 2017 16:31:08 -0400
changeset 674469 dd14cd329d4fa04da37b0628d0204038a27b4c06
parent 674468 1d0e0cdbb7d3b8e040e5555f8243735ad56cd960
child 674470 1b76e5465fd51d4f7d387055e16b8406d4c13cac
push id82854
push userkgupta@mozilla.com
push dateTue, 03 Oct 2017 21:03:51 +0000
reviewersjrmuizel
bugs1403915
milestone58.0a1
Bug 1403915 - Remove some leftover painting callback goop. r?jrmuizel MozReview-Commit-ID: BycK4Ug1sgm
gfx/layers/wr/WebRenderLayerManager.cpp
gfx/layers/wr/WebRenderLayerManager.h
layout/base/PresShell.cpp
--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -181,17 +181,17 @@ WebRenderLayerManager::EndEmptyTransacti
     // back, and will fall back to a full transaction. Therefore the only piece
     // of "pending" information we need to send in an empty transaction is the
     // APZ focus state.
     WrBridge()->SendSetFocusTarget(mFocusTarget);
     return true;
   }
 
   // We might used painted layer images so don't delete them yet.
-  return EndTransactionInternal(nullptr, nullptr, aFlags);
+  return EndTransactionInternal(aFlags);
 }
 
 /*static*/ int32_t
 PopulateScrollData(WebRenderScrollData& aTarget, Layer* aLayer)
 {
   MOZ_ASSERT(aLayer);
 
   // We want to allocate a WebRenderLayerScrollData object for this layer,
@@ -360,19 +360,17 @@ WebRenderLayerManager::CreateWebRenderCo
 }
 
 void
 WebRenderLayerManager::EndTransactionWithoutLayer(nsDisplayList* aDisplayList,
                                                   nsDisplayListBuilder* aDisplayListBuilder)
 {
   MOZ_ASSERT(aDisplayList && aDisplayListBuilder);
   WrBridge()->RemoveExpiredFontKeys();
-  EndTransactionInternal(nullptr,
-                         nullptr,
-                         EndTransactionFlags::END_DEFAULT,
+  EndTransactionInternal(EndTransactionFlags::END_DEFAULT,
                          aDisplayList,
                          aDisplayListBuilder);
 }
 
 Maybe<wr::ImageKey>
 WebRenderLayerManager::CreateImageKey(nsDisplayItem* aItem,
                                       ImageContainer* aContainer,
                                       mozilla::wr::DisplayListBuilder& aBuilder,
@@ -703,30 +701,27 @@ WebRenderLayerManager::PushItemAsImage(n
   return true;
 }
 
 void
 WebRenderLayerManager::EndTransaction(DrawPaintedLayerCallback aCallback,
                                       void* aCallbackData,
                                       EndTransactionFlags aFlags)
 {
-  WrBridge()->RemoveExpiredFontKeys();
-  EndTransactionInternal(aCallback, aCallbackData, aFlags);
+  // This should never get called, all callers should use
+  // EndTransactionWithoutLayer instead.
+  MOZ_ASSERT(false);
 }
 
 bool
-WebRenderLayerManager::EndTransactionInternal(DrawPaintedLayerCallback aCallback,
-                                              void* aCallbackData,
-                                              EndTransactionFlags aFlags,
+WebRenderLayerManager::EndTransactionInternal(EndTransactionFlags aFlags,
                                               nsDisplayList* aDisplayList,
                                               nsDisplayListBuilder* aDisplayListBuilder)
 {
   AutoProfilerTracing tracing("Paint", "RenderLayers");
-  mPaintedLayerCallback = aCallback;
-  mPaintedLayerCallbackData = aCallbackData;
   mTransactionIncomplete = false;
 
   if (gfxPrefs::LayersDump()) {
     this->Dump();
   }
 
   // Since we don't do repeat transactions right now, just set the time
   mAnimationReadyTime = TimeStamp::Now();
--- a/gfx/layers/wr/WebRenderLayerManager.h
+++ b/gfx/layers/wr/WebRenderLayerManager.h
@@ -151,22 +151,16 @@ public:
     mNeedsComposite = aNeedsComposite;
   }
   virtual bool NeedsComposite() const override { return mNeedsComposite; }
   virtual void SetIsFirstPaint() override { mIsFirstPaint = true; }
   virtual void SetFocusTarget(const FocusTarget& aFocusTarget) override;
 
   bool AsyncPanZoomEnabled() const override;
 
-  DrawPaintedLayerCallback GetPaintedLayerCallback() const
-  { return mPaintedLayerCallback; }
-
-  void* GetPaintedLayerCallbackData() const
-  { return mPaintedLayerCallbackData; }
-
   // adds an imagekey to a list of keys that will be discarded on the next
   // transaction or destruction
   void AddImageKeyForDiscard(wr::ImageKey);
   void DiscardImages();
   void DiscardLocalImages();
 
   // Methods to manage the compositor animation ids. Active animations are still
   // going, and when they end we discard them and remove them from the active
@@ -249,19 +243,17 @@ private:
   /**
    * Take a snapshot of the parent context, and copy
    * it into mTarget.
    */
   void MakeSnapshotIfRequired(LayoutDeviceIntSize aSize);
 
   void ClearLayer(Layer* aLayer);
 
-  bool EndTransactionInternal(DrawPaintedLayerCallback aCallback,
-                              void* aCallbackData,
-                              EndTransactionFlags aFlags,
+  bool EndTransactionInternal(EndTransactionFlags aFlags,
                               nsDisplayList* aDisplayList = nullptr,
                               nsDisplayListBuilder* aDisplayListBuilder = nullptr);
 
   void RemoveUnusedAndResetWebRenderUserData()
   {
     for (auto iter = mWebRenderUserDatas.Iter(); !iter.Done(); iter.Next()) {
       WebRenderUserData* data = iter.Get()->GetKey();
       if (!data->IsUsed()) {
@@ -298,21 +290,16 @@ private:
 
   // Set of compositor animation ids for which there are active animations (as
   // of the last transaction) on the compositor side.
   std::unordered_set<uint64_t> mActiveCompositorAnimationIds;
   // Compositor animation ids for animations that are done now and that we want
   // the compositor to discard information for.
   nsTArray<uint64_t> mDiscardedCompositorAnimationsIds;
 
-  /* PaintedLayer callbacks; valid at the end of a transaciton,
-   * while rendering */
-  DrawPaintedLayerCallback mPaintedLayerCallback;
-  void *mPaintedLayerCallbackData;
-
   RefPtr<WebRenderBridgeChild> mWrChild;
 
   RefPtr<TransactionIdAllocator> mTransactionIdAllocator;
   uint64_t mLatestTransactionId;
 
   nsTArray<DidCompositeObserver*> mDidCompositeObservers;
 
   LayerRefArray mKeepAlive;
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -6421,16 +6421,21 @@ PresShell::Paint(nsView*         aViewTo
 
   if (frame) {
     // We can paint directly into the widget using its layer manager.
     nsLayoutUtils::PaintFrame(nullptr, frame, aDirtyRegion, bgcolor,
                               nsDisplayListBuilderMode::PAINTING, flags);
     return;
   }
 
+  if (layerManager->GetBackendType() == layers::LayersBackend::LAYERS_WR) {
+    // TODO: bug 1405465 - create a WR display list which simulates the color layer below.
+    return;
+  }
+
   RefPtr<ColorLayer> root = layerManager->CreateColorLayer();
   if (root) {
     nsPresContext* pc = GetPresContext();
     nsIntRect bounds =
       pc->GetVisibleArea().ToOutsidePixels(pc->AppUnitsPerDevPixel());
     bgcolor = NS_ComposeColors(bgcolor, mCanvasBackgroundColor);
     root->SetColor(Color::FromABGR(bgcolor));
     root->SetVisibleRegion(LayerIntRegion::FromUnknownRegion(bounds));