Summary: | SVG renderers should track transform/path changes, instead of pulling every time from SVG DOM | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Eric Seidel (no email) <eric> | ||||||||||
Component: | SVG | Assignee: | Nobody <webkit-unassigned> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | krit, zimmermann | ||||||||||
Priority: | P2 | ||||||||||||
Version: | 523.x (Safari 3) | ||||||||||||
Hardware: | Mac | ||||||||||||
OS: | OS X 10.4 | ||||||||||||
URL: | http://research.sun.com/projects/lively/index.xhtml | ||||||||||||
Bug Depends on: | 15388 | ||||||||||||
Bug Blocks: | |||||||||||||
Attachments: |
|
Description
Eric Seidel (no email)
2007-10-05 22:12:09 PDT
Created attachment 16558 [details]
test case using setAttribute
Created attachment 16559 [details]
another test case using TransformList::initialize
Created attachment 16560 [details]
potential fix
So the "potential fix" doesn't actually work for *either* test case due to notifyAttributeChanged and the ultimate-evil which that function is. nAC is called indiscriminately *any time* any attribute changes, and is the single "notification method" from tear-off javascript bindings back into SVG DOM elements. We've had at least one bug on the subject before. Comment on attachment 16560 [details]
potential fix
Looks fine -- we might want to go through and do similar on all the other similar attribute setters.
Comment on attachment 16560 [details]
potential fix
Hadn't meant for this to be reviewed. We could apply this, but it doesn't help us much given nAC has already marked us for layout before we even get to this code. :(
The bug is still valid, though the codebase changed a lot since 2007, so I had to change the title to reflect what is really happening these days. Uploading a patch to fix this problem soon. Created attachment 53110 [details]
Patch
Comment on attachment 53110 [details]
Patch
Fantastic patch! r=me
Committed r57509: <http://trac.webkit.org/changeset/57509> |