Closed Bug 734660 Opened 12 years ago Closed 12 years ago

Get rid of nsISVGChildFrame::SUPPRESS_INVALIDATION

Categories

(Core :: SVG, defect)

defect
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: jwatt, Unassigned)

References

Details

Attachments

(1 file)

nsISVGChildFrame::SUPPRESS_INVALIDATION is redundant, since it's only passed by NS_STATE_SVG_NONDISPLAY_CHILD frames to their children to tell them not to try to invalidate their bounds. Any code that invalidates already checks for NS_STATE_SVG_NONDISPLAY_CHILD though.
Attachment #604665 - Flags: review?(longsonr)
Attachment #604665 - Attachment is patch: true
Attachment #604665 - Flags: review?(longsonr) → review+
My initial patch (before review) changed the three instances of |aFlags & SUPPRESS_INVALIDATION| to |mState & NS_STATE_SVG_NONDISPLAY_CHILD|. That caused a few Try failures that I mistakenly blamed on the patch preventing nsSVGEffects::InvalidateRenderingObservers in nsSVGUtils::UpdateGraphic from being called. Hence my reviewed patch that removed the |if (!(aFlags & SUPPRESS_INVALIDATION))| from around the nsSVGUtils::UpdateGraphic calls.

Unfortunately it seems that causes failures too, by creating some sort of (asynchronous) invalidation loop that prevents MozReftestInvalidate from ever being called. More specifically, Try claimed the following tests timed out:

  layout/reftests/bugs/614272-1.svg
  layout/reftests/svg/as-image/svg-image-script-2.svg
  layout/reftests/svg/smil/transform/translate-clipPath-1.svg
  layout/reftests/svg/smil/transform/translate-pattern-1.svg
  layout/reftests/svg/dynamic-clipPath-01.svg

So it seems like there is actually a reason for SUPPRESS_INVALIDATION to exist, although it's not at all clear from the code or documenting comments. It seems the point is to suppress rendering observer notifications (not invalidation, as the code/comments would suggest) when calling NotifySVGChanged on the content of clipPath, mask, pattern or marker _immediately_ before painting them. That makes total sense since they're only being updated for that specific paint call while painting part of a clipPath, mask, pattern or mark.

So this is INVALID I guess.
Assignee: jwatt → nobody
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → INVALID
Attachment #604665 - Attachment description: patch → patch [not landed]
I filed bug 734732 for renaming nsISVGChildFrame::SUPPRESS_INVALIDATION.
Blocks: 734079
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: