Skip to content

Commit

Permalink
Bug 1382744 - Make sure we process nested display items for layers-fr…
Browse files Browse the repository at this point in the history
…ee webrender mode. r=ethlin

MozReview-Commit-ID: mTox2irS1w
  • Loading branch information
staktrace committed Jul 20, 2017
1 parent de3d13e commit ab7f68a
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gfx/layers/wr/WebRenderLayerManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ PopulateScrollData(WebRenderScrollData& aTarget, Layer* aLayer)
void
WebRenderLayerManager::CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder,
StackingContextHelper& aSc,
const StackingContextHelper& aSc,
wr::DisplayListBuilder& aBuilder)
{
nsDisplayList savedItems;
Expand Down
2 changes: 1 addition & 1 deletion gfx/layers/wr/WebRenderLayerManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class WebRenderLayerManager final : public LayerManager
nsDisplayListBuilder* aDisplayListBuilder);
void CreateWebRenderCommandsFromDisplayList(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder,
StackingContextHelper& aSc,
const StackingContextHelper& aSc,
wr::DisplayListBuilder& aBuilder);
void EndTransactionWithoutLayer(nsDisplayList* aDisplayList,
nsDisplayListBuilder* aDisplayListBuilder);
Expand Down
20 changes: 20 additions & 0 deletions layout/painting/nsDisplayList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5772,6 +5772,26 @@ nsDisplayWrapList::SetReferenceFrame(const nsIFrame* aFrame)
mToReferenceFrame = mFrame->GetOffsetToCrossDoc(mReferenceFrame);
}

bool
nsDisplayWrapList::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
const StackingContextHelper& aSc,
nsTArray<WebRenderParentCommand>& aParentCommands,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
// If this function is called in layers mode that means we created a
// WebRenderDisplayItemLayer for a display item that is a subclass of
// nsDisplayWrapList, but we didn't actually implement the overridden
// CreateWebRenderCommandsFromDisplayList on it. That doesn't seem correct.
MOZ_ASSERT(aManager->IsLayersFreeTransaction());

aManager->CreateWebRenderCommandsFromDisplayList(GetChildren(),
aDisplayListBuilder,
aSc,
aBuilder);
return true;
}

static nsresult
WrapDisplayList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, nsDisplayWrapper* aWrapper) {
Expand Down
6 changes: 6 additions & 0 deletions layout/painting/nsDisplayList.h
Original file line number Diff line number Diff line change
Expand Up @@ -3870,6 +3870,12 @@ class nsDisplayWrapList : public nsDisplayItem {
return nullptr;
}

virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
const StackingContextHelper& aSc,
nsTArray<WebRenderParentCommand>& aParentCommands,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder) override;

protected:
nsDisplayWrapList() {}

Expand Down

0 comments on commit ab7f68a

Please sign in to comment.