Closed
Bug 1090936
Opened 11 years ago
Closed 11 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•11 years ago
|
Attachment #8513449 -
Flags: review?(jwatt)
| Assignee | ||
Updated•11 years ago
|
Attachment #8513449 -
Attachment is patch: true
Comment 1•11 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•11 years ago
|
||
| Assignee | ||
Comment 3•11 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•11 years ago
|
Assignee: nobody → longsonr
Comment 4•11 years ago
|
||
Ah, sorry, I failed to notice that part of the change.
Comment 5•11 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•11 years ago
|
||
| Assignee | ||
Comment 7•11 years ago
|
||
Flags: in-testsuite-
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla36
Updated•6 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•