Bug 1393376 - (Part 1) Paint the item when its type is TYPE_FILTER during WebRenderFallbackData generating; r=jrmuizel

MozReview-Commit-ID: JxNa1OGrSVb

--HG--
extra : rebase_source : 0d8bc8aeac1f120bb9eb873f9b9c36ba155d5dda
This commit is contained in:
Kevin Chen 2017-09-11 15:07:26 +08:00
Родитель 248b760c2d
Коммит 92bb8afb2a
1 изменённых файлов: 13 добавлений и 5 удалений

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

@ -554,11 +554,18 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
}
aOffset = RoundedToInt(bounds.TopLeft());
nsRegion invalidRegion;
bool needPaint = true;
nsAutoPtr<nsDisplayItemGeometry> geometry = fallbackData->GetGeometry();
if (geometry) {
// nsDisplayFilter is rendered via BasicLayerManager which means the invalidate
// region is unknown until we traverse the displaylist contained by it.
if (geometry && !fallbackData->IsInvalid() &&
aItem->GetType() != DisplayItemType::TYPE_FILTER) {
nsRect invalid;
nsRegion invalidRegion;
if (aItem->IsInvalid(invalid)) {
invalidRegion.OrWith(clippedBounds);
} else {
@ -574,11 +581,12 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
invalidRegion.OrWith(clippedBounds);
}
}
needPaint = !invalidRegion.IsEmpty();
}
gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ?
gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8;
if (!geometry || !invalidRegion.IsEmpty() || fallbackData->IsInvalid()) {
if (needPaint) {
gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ?
gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8;
if (gfxPrefs::WebRenderBlobImages()) {
bool snapped;
bool isOpaque = aItem->GetOpaqueRegion(aDisplayListBuilder, &snapped).Contains(clippedBounds);