From c5b2766eac1a56df7705407e920ac15acae3b3e7 Mon Sep 17 00:00:00 2001 From: Morris Tseng Date: Wed, 28 Jun 2017 13:57:00 -0700 Subject: [PATCH] Bug 1376855 - Support image mode of nsDisplayBorder in layers free mode. r=kats MozReview-Commit-ID: 8FgUKpeCbka --HG-- extra : rebase_source : 66b66d26c9b22cc0a9b11f57e9a743f07d8e6b42 --- layout/painting/nsDisplayList.cpp | 15 ++++++++------- layout/painting/nsDisplayList.h | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp index 00584c0a116d..c49c10709e8c 100644 --- a/layout/painting/nsDisplayList.cpp +++ b/layout/painting/nsDisplayList.cpp @@ -4962,8 +4962,8 @@ nsDisplayBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuild } if (mBorderImageRenderer) { - // TODO: support image type display items. - //CreateBorderImageWebRenderCommands(aBuilder, aSc, aParentCommands, aLayer); + CreateBorderImageWebRenderCommands(aBuilder, aSc, aParentCommands, + aManager, aDisplayListBuilder); } else if (mBorderRenderer) { mBorderRenderer->CreateWebRenderCommands(aBuilder, aSc); } @@ -4975,7 +4975,8 @@ void nsDisplayBorder::CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, const StackingContextHelper& aSc, nsTArray& aParentCommands, - WebRenderDisplayItemLayer* aLayer) + mozilla::layers::WebRenderLayerManager* aManager, + nsDisplayListBuilder* aDisplayListBuilder) { MOZ_ASSERT(mBorderImageRenderer); if (!mBorderImageRenderer->mImageRenderer.IsReady()) { @@ -5006,18 +5007,18 @@ nsDisplayBorder::CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuil switch (mBorderImageRenderer->mImageRenderer.GetType()) { case eStyleImageType_Image: { - nsDisplayListBuilder* builder = aLayer->GetDisplayListBuilder(); - uint32_t flags = builder->ShouldSyncDecodeImages() ? + uint32_t flags = aDisplayListBuilder->ShouldSyncDecodeImages() ? imgIContainer::FLAG_SYNC_DECODE : imgIContainer::FLAG_NONE; RefPtr img = mBorderImageRenderer->mImageRenderer.GetImage(); - RefPtr container = img->GetImageContainer(aLayer->WrManager(), flags); + RefPtr container = img->GetImageContainer(aManager, flags); if (!container) { return; } - Maybe key = aLayer->SendImageContainer(container, aParentCommands); + gfx::IntSize size; + Maybe key = aManager->CreateImageKey(this, container, aBuilder, aSc, size); if (key.isNothing()) { return; } diff --git a/layout/painting/nsDisplayList.h b/layout/painting/nsDisplayList.h index e69ae3a13b1a..f1e46f41e0be 100644 --- a/layout/painting/nsDisplayList.h +++ b/layout/painting/nsDisplayList.h @@ -2907,7 +2907,8 @@ protected: void CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder, const StackingContextHelper& aSc, nsTArray& aParentCommands, - WebRenderDisplayItemLayer* aLayer); + mozilla::layers::WebRenderLayerManager* aManager, + nsDisplayListBuilder* aDisplayListBuilder); nsRegion CalculateBounds(const nsStyleBorder& aStyleBorder); mozilla::Array mColors;