Re: Significant performance degradation related to foreignObjects with scrollbars
Robert Longson <[email protected]>
| Newsgroups | gmane.comp.mozilla.devel.svg |
|---|---|
| Organization | http://groups.google.com |
| Message-ID | <[email protected]> |
Steve, Anytime anything changes anywhere on the screen we redraw all foreignObjects. We do that to mask artifacts that occur if you try to rerender part of the foreignObject. If you want to fix it, I can provide some pointers to the code to look at: a) nsSVGForeignObjectFrame::PaintSVG does not pass a transformed? dirty rect but instead uses nsRegion(kid->GetRect()) which is the whole area b) nsSVGForeignObjectFrame::InvalidateDirtyRect contains rect.UnionRect(rect, mRect); so that it invalidates the whole object. You would need to fix these and then do the harder job of determining why rendering goes wrong if you redraw just part of the foreignObject. It might be possible to do something simpler and check whether aDirtyRect overlaps kid->GetRect() at all in a) and just redraw if there is any overlap at all. That would likely help your case. Bug https://bugzilla.mozilla.org/show_bug.cgi?id=418063 is tracking this issue. BTW on windows I only see the scrollbar effect. The anomolous region effect does not seem to occur for me. Best regards Robert