Closed Bug 1000382 Opened 9 years ago Closed 9 years ago

Don't simplify the invalidation region before calling nsSVGIntegrationUtils::AdjustInvalidAreaForSVGEffects

Categories

(Core :: SVG, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla31

People

(Reporter: mstange, Assigned: mstange)

References

Details

Attachments

(1 file)

Attached patch patch + testSplinter Review
With bug 1000167 fixed, we still invalidate on its testcase (attachment 8411006 [details]) when scrolling far enough down that both the top and the bottom edge of the filtered or masked elements are out-of-view. That's because the inactive layer manager yields an invalid region that consists of a small strip at the top and a small strip at the bottom, and the .GetBounds() call prior to to the call to nsSVGIntegrationUtils::AdjustInvalidAreaForSVGEffects destroys our nice and tight invalid region.

All the FilterSupport methods are already setup to deal with regions instead of rects, so we just need to forward the regions along to the right places.
Attachment #8411217 - Flags: review?(roc)
Comment on attachment 8411217 [details] [diff] [review]
patch + test

Review of attachment 8411217 [details] [diff] [review]:
-----------------------------------------------------------------

::: layout/svg/nsFilterInstance.cpp
@@ +600,5 @@
> +  }
> +  nsIntRegion result;
> +  nsRegionRectIterator it(*aRegion);
> +  while (const nsRect* r = it.Next()) {
> +    result.Or(result, FrameSpaceToFilterSpace(r));

For this to work properly, FrameSpaceToFilterSpace needs to round out. I believe it does, but please document this requirement.

@@ +611,5 @@
> +{
> +  nsRegion result;
> +  nsIntRegionRectIterator it(aRegion);
> +  while (const nsIntRect* r = it.Next()) {
> +    result.Or(result, FilterSpaceToFrameSpace(*r));

Similar here
Attachment #8411217 - Flags: review?(roc) → review+
https://hg.mozilla.org/mozilla-central/rev/a26c8f53a223
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla31
You need to log in before you can comment on or make changes to this bug.