зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
248b760c2d
Коммит
92bb8afb2a
|
@ -554,11 +554,18 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
|
||||||
}
|
}
|
||||||
|
|
||||||
aOffset = RoundedToInt(bounds.TopLeft());
|
aOffset = RoundedToInt(bounds.TopLeft());
|
||||||
nsRegion invalidRegion;
|
|
||||||
|
bool needPaint = true;
|
||||||
nsAutoPtr<nsDisplayItemGeometry> geometry = fallbackData->GetGeometry();
|
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;
|
nsRect invalid;
|
||||||
|
nsRegion invalidRegion;
|
||||||
|
|
||||||
if (aItem->IsInvalid(invalid)) {
|
if (aItem->IsInvalid(invalid)) {
|
||||||
invalidRegion.OrWith(clippedBounds);
|
invalidRegion.OrWith(clippedBounds);
|
||||||
} else {
|
} else {
|
||||||
|
@ -574,11 +581,12 @@ WebRenderLayerManager::GenerateFallbackData(nsDisplayItem* aItem,
|
||||||
invalidRegion.OrWith(clippedBounds);
|
invalidRegion.OrWith(clippedBounds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
needPaint = !invalidRegion.IsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (needPaint) {
|
||||||
gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ?
|
gfx::SurfaceFormat format = aItem->GetType() == DisplayItemType::TYPE_MASK ?
|
||||||
gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8;
|
gfx::SurfaceFormat::A8 : gfx::SurfaceFormat::B8G8R8A8;
|
||||||
if (!geometry || !invalidRegion.IsEmpty() || fallbackData->IsInvalid()) {
|
|
||||||
if (gfxPrefs::WebRenderBlobImages()) {
|
if (gfxPrefs::WebRenderBlobImages()) {
|
||||||
bool snapped;
|
bool snapped;
|
||||||
bool isOpaque = aItem->GetOpaqueRegion(aDisplayListBuilder, &snapped).Contains(clippedBounds);
|
bool isOpaque = aItem->GetOpaqueRegion(aDisplayListBuilder, &snapped).Contains(clippedBounds);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче