Closed
Bug 1090936
Opened 9 years ago
Closed 9 years ago
Make invalidation of rendering observers async
Categories
(Core :: SVG, defect)
Core
SVG
Tracking
()
RESOLVED
FIXED
mozilla36
People
(Reporter: longsonr, Assigned: longsonr)
References
Details
Attachments
(1 file)
24.78 KB,
patch
|
jwatt
:
review+
|
Details | Diff | Splinter Review |
Builds on bug 975757 and converts the remaining InvalidateRenderingObservers calls so all tree crawling is done by the restyle manager
Assignee | ||
Updated•9 years ago
|
Attachment #8513449 -
Flags: review?(jwatt)
Assignee | ||
Updated•9 years ago
|
Attachment #8513449 -
Attachment is patch: true
![]() |
||
Comment 1•9 years ago
|
||
The SVGFE*Frame and SVGStopFrame changes seem wrong, and I don't think they will pass Try. We only add observers to elements that we obtain via nsSVGRenderingObserver::GetReferencedElement(), right? So observers are only added to the <filter> and <linear/radialGradient> elements.
Assignee | ||
Comment 2•9 years ago
|
||
https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=476a6d1a457c
Assignee | ||
Comment 3•9 years ago
|
||
In nsSVGStopFrame I've got nsSVGEffects::InvalidateDirectRenderingObservers(GetParent()); The parent of the stop frame is the gradient on which we have observers. Similar for the FE*Frame changes.
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → longsonr
![]() |
||
Comment 4•9 years ago
|
||
Ah, sorry, I failed to notice that part of the change.
![]() |
||
Comment 5•9 years ago
|
||
Comment on attachment 8513449 [details] [diff] [review] async.txt Review of attachment 8513449 [details] [diff] [review]: ----------------------------------------------------------------- Looks great, thank you Robert. ::: layout/svg/SVGFEContainerFrame.cpp @@ +100,5 @@ > int32_t aModType) > { > nsSVGFE *element = static_cast<nsSVGFE*>(mContent); > if (element->AttributeAffectsRendering(aNameSpaceID, aAttribute)) { > + nsSVGEffects::InvalidateDirectRenderingObservers(GetParent()); I think it's worth adding something like: MOZ_ASSERT(GetParent()->GetType() == nsGkAtoms::svgFilterFrame, "Observers observe the filter, so that's what we must invalidate"); here and equivalents to the other SVGFE* changes in case the spec/implementation changes to make it possible to fail in this way. ::: layout/svg/nsSVGStopFrame.cpp @@ +97,5 @@ > int32_t aModType) > { > if (aNameSpaceID == kNameSpaceID_None && > aAttribute == nsGkAtoms::offset) { > + nsSVGEffects::InvalidateDirectRenderingObservers(GetParent()); Add a similar assert here for nsGkAtoms::svgLinearGradientFrame and nsGkAtoms::svgRadialGradientFrame.
Attachment #8513449 -
Flags: review?(jwatt) → review+
Assignee | ||
Comment 6•9 years ago
|
||
https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=2fd36892ad6d
Assignee | ||
Comment 7•9 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/7822514901e6
Flags: in-testsuite-
https://hg.mozilla.org/mozilla-central/rev/7822514901e6
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla36
Updated•4 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•