Bug 1310575 - Part 2. Implement nsDisplayFilter::ComputeInvalidationRegion. r=mstange

Bring back ShouldInvalidateToSyncDecodeImages check in
nsDisplayFilter::ComputeInvalidationRegion.
nsSVGIntegrationUtils::PaintFilter might be failure if the filter is not ready.
That is, effectProperties.HasValidFilter() returns false. So we still need that
check.

MozReview-Commit-ID: B4Lv5qZlHRr

--HG--
extra : rebase_source : 99a02e8d9401ce144a004795a4b3f4e5f505afb1
This commit is contained in:
cku 2016-10-28 11:31:08 +08:00
Родитель 5c0dd57b39
Коммит ca4fc9245c
2 изменённых файлов: 24 добавлений и 3 удалений

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

@ -7071,8 +7071,8 @@ bool nsDisplayMask::ComputeVisibility(nsDisplayListBuilder* aBuilder,
void
nsDisplayMask::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion)
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion)
{
nsDisplaySVGEffects::ComputeInvalidationRegion(aBuilder, aGeometry,
aInvalidRegion);
@ -7274,6 +7274,25 @@ bool nsDisplayFilter::ComputeVisibility(nsDisplayListBuilder* aBuilder,
return true;
}
void
nsDisplayFilter::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion)
{
nsDisplaySVGEffects::ComputeInvalidationRegion(aBuilder, aGeometry,
aInvalidRegion);
const nsDisplayFilterGeometry* geometry =
static_cast<const nsDisplayFilterGeometry*>(aGeometry);
if (aBuilder->ShouldSyncDecodeImages() &&
geometry->ShouldInvalidateToSyncDecodeImages()) {
bool snap;
nsRect bounds = GetBounds(aBuilder, &snap);
aInvalidRegion->Or(*aInvalidRegion, bounds);
}
}
void
nsDisplayFilter::PaintAsLayer(nsDisplayListBuilder* aBuilder,
nsRenderingContext* aCtx,

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

@ -3953,7 +3953,9 @@ public:
{
return new nsDisplayFilterGeometry(this, aBuilder);
}
virtual void ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion) override;
#ifdef MOZ_DUMP_PAINTING
void PrintEffects(nsACString& aTo);
#endif