Bug 1344971 - Part 5: Don't track multiple DLBI rects for nsDisplayBorder. r?mstange
We shouldn't need both of those, any reflow should trigger them both to change, and a style change
would set the invalid bit on the frame.
MozReview-Commit-ID: IOlY0LB4N4G
--- a/layout/painting/nsDisplayList.cpp
+++ b/layout/painting/nsDisplayList.cpp
@@ -4531,18 +4531,17 @@ nsDisplayBorder::AllocateGeometry(nsDisp
void
nsDisplayBorder::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
const nsDisplayItemGeometry* aGeometry,
nsRegion* aInvalidRegion)
{
const nsDisplayBorderGeometry* geometry = static_cast<const nsDisplayBorderGeometry*>(aGeometry);
bool snap;
- if (!geometry->mBounds.IsEqualInterior(GetBounds(aBuilder, &snap)) ||
- !geometry->mContentRect.IsEqualInterior(GetContentRect())) {
+ if (!geometry->mBounds.IsEqualInterior(GetBounds(aBuilder, &snap))) {
// We can probably get away with only invalidating the difference
// between the border and padding rects, but the XUL ui at least
// is apparently painting a background with this?
aInvalidRegion->Or(GetBounds(aBuilder, &snap), geometry->mBounds);
}
if (aBuilder->ShouldSyncDecodeImages() &&
geometry->ShouldInvalidateToSyncDecodeImages()) {
--- a/layout/painting/nsDisplayListInvalidation.cpp
+++ b/layout/painting/nsDisplayListInvalidation.cpp
@@ -43,26 +43,18 @@ nsDisplayItemBoundsGeometry::nsDisplayIt
{
nscoord radii[8];
mHasRoundedCorners = aItem->Frame()->GetBorderRadii(radii);
}
nsDisplayBorderGeometry::nsDisplayBorderGeometry(nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder)
: nsDisplayItemGeometry(aItem, aBuilder)
, nsImageGeometryMixin(aItem, aBuilder)
- , mContentRect(aItem->GetContentRect())
{}
-void
-nsDisplayBorderGeometry::MoveBy(const nsPoint& aOffset)
-{
- nsDisplayItemGeometry::MoveBy(aOffset);
- mContentRect.MoveBy(aOffset);
-}
-
nsDisplayBackgroundGeometry::nsDisplayBackgroundGeometry(nsDisplayBackgroundImage* aItem,
nsDisplayListBuilder* aBuilder)
: nsDisplayItemGeometry(aItem, aBuilder)
, nsImageGeometryMixin(aItem, aBuilder)
, mPositioningArea(aItem->GetPositioningArea())
, mDestRect(aItem->GetDestRect())
{}
--- a/layout/painting/nsDisplayListInvalidation.h
+++ b/layout/painting/nsDisplayListInvalidation.h
@@ -181,20 +181,16 @@ public:
};
class nsDisplayBorderGeometry
: public nsDisplayItemGeometry
, public nsImageGeometryMixin<nsDisplayBorderGeometry>
{
public:
nsDisplayBorderGeometry(nsDisplayItem* aItem, nsDisplayListBuilder* aBuilder);
-
- virtual void MoveBy(const nsPoint& aOffset) override;
-
- nsRect mContentRect;
};
class nsDisplayBackgroundGeometry
: public nsDisplayItemGeometry
, public nsImageGeometryMixin<nsDisplayBackgroundGeometry>
{
public:
nsDisplayBackgroundGeometry(nsDisplayBackgroundImage* aItem, nsDisplayListBuilder* aBuilder);