go to the above link in OmniWeb or the lates WebKit nightly, and watch your CPU consumption. It rockets up, and stays high, until you hide the page by opening a new tab over it. (being in a background tab it doesn't consume silly amounts of processing time, but hidden and in a front-most tab it does. I'm attaching a sample as well.
Created attachment 11675 [details] Sample of Webkit Misbehaving
A huge part of the page is constantly repainting at 10fps due to one or two elements having a small animated gif as their non-repeating background image. Something like: <div style="height: 500px; background: url(http://www.wowhead.com/images/loading2.gif) no-repeat"></div> causes the entire div to repaint on each animation frame. Note that the background is non-repeating, so there's no reason to repaint the whole area. Shipping Safari repaints only the 16x16 area that animates.
This is fallout from having a real animation observer architecture. That the old way worked more efficiently was largely coincidental. RenderObjects will have to study their background geometry and be smarter about what they repaint when they get told that a new animation frame is available.
<rdar://problem/4960272>
Created attachment 12861 [details] Invalidate only the area where the updated image paints. Also fixes bug 5399.
Created attachment 12862 [details] Binaries part of the patch
Comment on attachment 12861 [details] Invalidate only the area where the updated image paints. Also fixes bug 5399. (1) Inline flows need to be handled (if they're broken up across multiple lines). (2) Would it be better to put the table checks into imageChanged overrides in the table code itself? (3) Change the htmlTag/bodyTag stuff to isRoot()/isBody().
Created attachment 12868 [details] Invalidate only the area where the updated image paints. Also fixes bug 5399 and bug 5821. Addressed Hyatt's comments: inline flows do a full repaint; table parts handled by overrides, also changed <col> to repaint the whole table instead of nothing, fixing bug 5821; changed to use isBody() and isRoot().
Created attachment 12869 [details] Binaries part of the patch
Comment on attachment 12868 [details] Invalidate only the area where the updated image paints. Also fixes bug 5399 and bug 5821. r=me
Landed in r19490.
Binary bits were in r19570.