Bug 1376855 - Support image mode of nsDisplayBorder in layers free mode. r=kats

MozReview-Commit-ID: 8FgUKpeCbka

--HG--
extra : rebase_source : 66b66d26c9b22cc0a9b11f57e9a743f07d8e6b42
This commit is contained in:
Morris Tseng 2017-06-28 13:57:00 -07:00
Родитель b01c8dcc1a
Коммит c5b2766eac
2 изменённых файлов: 10 добавлений и 8 удалений

Просмотреть файл

@ -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<WebRenderParentCommand>& 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<imgIContainer> img = mBorderImageRenderer->mImageRenderer.GetImage();
RefPtr<layers::ImageContainer> container = img->GetImageContainer(aLayer->WrManager(), flags);
RefPtr<layers::ImageContainer> container = img->GetImageContainer(aManager, flags);
if (!container) {
return;
}
Maybe<wr::ImageKey> key = aLayer->SendImageContainer(container, aParentCommands);
gfx::IntSize size;
Maybe<wr::ImageKey> key = aManager->CreateImageKey(this, container, aBuilder, aSc, size);
if (key.isNothing()) {
return;
}

Просмотреть файл

@ -2907,7 +2907,8 @@ protected:
void CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
const StackingContextHelper& aSc,
nsTArray<WebRenderParentCommand>& aParentCommands,
WebRenderDisplayItemLayer* aLayer);
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder);
nsRegion CalculateBounds(const nsStyleBorder& aStyleBorder);
mozilla::Array<mozilla::gfx::Color, 4> mColors;