зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1582152. Drop bounds change check. r=mstange
Instead of checking whether the bounds of the clipped image has changed just check whether our clipped bounds have changed. This simplifies the code and avoids a bunch of extra invalidations. Differential Revision: https://phabricator.services.mozilla.com/D47971 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
ae2f34a5b1
Коммит
d8da468e74
|
@ -526,46 +526,25 @@ struct DIGroup {
|
|||
aData->mRect = transformedRect.Intersect(mClippedImageBounds);
|
||||
InvalidateRect(aData->mRect);
|
||||
GP("DetectContainerLayerPropertiesBoundsChange change\n");
|
||||
} else if (!aData->mImageRect.IsEqualEdges(mClippedImageBounds)) {
|
||||
// Make sure we update mRect for mClippedImageBounds changes
|
||||
nsRect clippedBounds = clip.ApplyNonRoundedIntersection(
|
||||
geometry->ComputeInvalidationRegion());
|
||||
IntRect transformedRect =
|
||||
ToDeviceSpace(clippedBounds, aMatrix, appUnitsPerDevPixel);
|
||||
// The invalid rect should contain the old rect and the new rect
|
||||
// but may not because the parent may have been removed.
|
||||
InvalidateRect(aData->mRect);
|
||||
aData->mRect = transformedRect.Intersect(mClippedImageBounds);
|
||||
InvalidateRect(aData->mRect);
|
||||
GP("ContainerLayer image rect bounds change\n");
|
||||
} else {
|
||||
// XXX: this code can eventually be deleted/made debug only
|
||||
// Handle changes in mClippedImageBounds
|
||||
nsRect clippedBounds = clip.ApplyNonRoundedIntersection(
|
||||
geometry->ComputeInvalidationRegion());
|
||||
IntRect transformedRect =
|
||||
ToDeviceSpace(clippedBounds, aMatrix, appUnitsPerDevPixel);
|
||||
auto rect = transformedRect.Intersect(mClippedImageBounds);
|
||||
if (!rect.IsEqualEdges(aData->mRect)) {
|
||||
GP("ContainerLayer image rect bounds change\n");
|
||||
InvalidateRect(aData->mRect);
|
||||
aData->mRect = rect;
|
||||
InvalidateRect(aData->mRect);
|
||||
} else {
|
||||
GP("Layer NoChange: %s %d %d %d %d\n", aItem->Name(),
|
||||
aData->mRect.x, aData->mRect.y, aData->mRect.XMost(),
|
||||
aData->mRect.YMost());
|
||||
MOZ_RELEASE_ASSERT(rect.IsEqualEdges(aData->mRect));
|
||||
}
|
||||
} else if (!aData->mImageRect.IsEqualEdges(mClippedImageBounds)) {
|
||||
// Make sure we update mRect for mClippedImageBounds changes
|
||||
UniquePtr<nsDisplayItemGeometry> geometry(
|
||||
aItem->AllocateGeometry(aBuilder));
|
||||
nsRect clippedBounds = clip.ApplyNonRoundedIntersection(
|
||||
geometry->ComputeInvalidationRegion());
|
||||
IntRect transformedRect =
|
||||
ToDeviceSpace(clippedBounds, aMatrix, appUnitsPerDevPixel);
|
||||
// The invalid rect should contain the old rect and the new rect
|
||||
// but may not because the parent may have been removed.
|
||||
InvalidateRect(aData->mRect);
|
||||
aData->mRect = transformedRect.Intersect(mClippedImageBounds);
|
||||
InvalidateRect(aData->mRect);
|
||||
GP("image rect bounds change\n");
|
||||
}
|
||||
} else {
|
||||
// XXX: this code can eventually be deleted/made debug only
|
||||
UniquePtr<nsDisplayItemGeometry> geometry(
|
||||
aItem->AllocateGeometry(aBuilder));
|
||||
nsRect clippedBounds = clip.ApplyNonRoundedIntersection(
|
||||
|
@ -573,10 +552,17 @@ struct DIGroup {
|
|||
IntRect transformedRect =
|
||||
ToDeviceSpace(clippedBounds, aMatrix, appUnitsPerDevPixel);
|
||||
auto rect = transformedRect.Intersect(mClippedImageBounds);
|
||||
GP("NoChange: %s %d %d %d %d vs %d %d %d %d\n", aItem->Name(), rect.x,
|
||||
rect.y, rect.XMost(), rect.YMost(), aData->mRect.x, aData->mRect.y,
|
||||
aData->mRect.XMost(), aData->mRect.YMost());
|
||||
MOZ_RELEASE_ASSERT(rect.IsEqualEdges(aData->mRect));
|
||||
// Make sure we update mRect for mClippedImageBounds changes
|
||||
if (!rect.IsEqualEdges(aData->mRect)) {
|
||||
GP("ContainerLayer image rect bounds change\n");
|
||||
InvalidateRect(aData->mRect);
|
||||
aData->mRect = rect;
|
||||
InvalidateRect(aData->mRect);
|
||||
} else {
|
||||
GP("NoChange: %s %d %d %d %d\n", aItem->Name(),
|
||||
aData->mRect.x, aData->mRect.y, aData->mRect.XMost(),
|
||||
aData->mRect.YMost());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче