Bug 1347871 - Do not create webrender commands if the image renderer doesn't have image container. r=mattwoodrow

--HG--
extra : rebase_source : 4b796a83e76b0dc812208a408570a63618ef47a1
This commit is contained in:
Ethan Lin 2017-03-20 16:27:55 +08:00
parent c6f971413b
commit 803515ec05
3 changed files with 17 additions and 0 deletions

View File

@ -4573,6 +4573,10 @@ nsDisplayBorder::GetLayerState(nsDisplayListBuilder* aBuilder,
if (!mBorderImageRenderer) {
return LAYER_NONE;
}
if (!mBorderImageRenderer->mImageRenderer.IsImageContainerAvailable(aManager, flags)) {
return LAYER_NONE;
}
}
return LAYER_ACTIVE;
@ -4666,6 +4670,9 @@ nsDisplayBorder::CreateBorderImageWebRenderCommands(mozilla::wr::DisplayListBuil
}
uint64_t externalImageId = aLayer->SendImageContainer(container);
if (!externalImageId) {
return;
}
const int32_t appUnitsPerDevPixel = mFrame->PresContext()->AppUnitsPerDevPixel();
Rect destRect =

View File

@ -854,6 +854,15 @@ nsImageRenderer::GetImage()
return image.forget();
}
bool
nsImageRenderer::IsImageContainerAvailable(layers::LayerManager* aManager, uint32_t aFlags)
{
if (!mImageContainer) {
return false;
}
return mImageContainer->IsImageContainerAvailable(aManager, aFlags);
}
void
nsImageRenderer::PurgeCacheForViewportChange(
const Maybe<nsSize>& aSVGViewportSize, const bool aHasIntrinsicRatio)

View File

@ -230,6 +230,7 @@ public:
/// Retrieves the image associated with this nsImageRenderer, if there is one.
already_AddRefed<imgIContainer> GetImage();
bool IsImageContainerAvailable(layers::LayerManager* aManager, uint32_t aFlags);
bool IsReady() const { return mPrepareResult == DrawResult::SUCCESS; }
DrawResult PrepareResult() const { return mPrepareResult; }
void SetExtendMode(mozilla::gfx::ExtendMode aMode) { mExtendMode = aMode; }