If you drag the map slowly straight down (or straight to the right), it "smears".
The regression happened between Nov 6 and Nov 8 so I'm guessing it's from fixing bug 5633.
Created attachment 5506 [details] Reduced testcase The optimized repaint code thinks that the image only resized, rather than moved.
<rdar://problem/4405688>
Created attachment 5931 [details] Possible fix This fixes the Google maps site and the testcase. I think the bug (mistaking a move for a resize due to clipping) can only happen to objects that have a layer, since otherwise repaintDuringLayoutIfMoved handles it. If the patch is good, please r- and I'll resubmit with a ChangeLog entry and a manual test (unfortunately repaint issues can't be tested automatically).
Comment on attachment 5931 [details] Possible fix Looks good. I think you can move on to the next step on this one.
Could you explain this further? I don't see why these extra fields are necessary.
This is marked as a regression. Was it caused by the checkin I did a month or two ago to optimize repainting when a block resized but didn't move?
(In reply to comment #7) > This is marked as a regression. Was it caused by the checkin I did a month or > two ago to optimize repainting when a block resized but didn't move? Yes. There are several of those, some fixed, some still not. (In reply to comment #6) > Could you explain this further? I don't see why these extra fields are > necessary. Using absolute repaint rects, all repaintAfterLayoutIfNeeded sees is a resize, due to clipping. This extra info is what's needed to break the move/resize ambiguity. There is at least one other case where repaintAfterLayoutIfNeeded lacks enough information to determine what really changed (see bug 6770), so perhaps repaintAfterLayoutIfNeeded will need to take extra arguments (e.g. the object's unclipped rect in absolute coordinates), in which case layers will need to cache that info.
Ok, yeah I see now. I think I might rename the member variables m_repaintX and m_repaintY or something like that, since they are really just cached values for the repaint check step.
Created attachment 5946 [details] Updated patch Renamed member variables and added ChangeLog and manual test.
Comment on attachment 5946 [details] Updated patch Nice. Lets go with this. r=me Onward to the other repaint problems. :-)
Verified in r12402 nightly
Removing Regression keyword from bugs already fixed.