Open Bug 824113 Opened 12 years ago Updated 2 years ago

Excessive repainting when appending some content that isn't in the visible part of the page

Categories

(Core :: Layout, defect)

x86
macOS
defect

Tracking

()

People

(Reporter: florian, Unassigned)

References

Details

(Whiteboard: [Snappy])

Attachments

(1 file)

Attached file Reduced test case
I noticed this in Instantbird after turning on nglayout.debug.paint_flashing when I saw with the gecko profiler that more than 40% of the time spent while displaying a very large IM conversation is spent in -[NSView displayIfNeeded]

The full profile is http://people.mozilla.com/~bgirard/cleopatra/#report=1b1d4e07a264986d3d1a4a2780cb9601c013b867 (and yes, I've got lots of other things to optimize in my JS code).
Note: it's possible that this profile was taken with a message theme that used a background gradient on <body>. With the gradient the whole content area was repainted, without it only a part kept being repainted at the top, even though nothing had changed there.

Here is a screencast of the surprising painting behavior: http://www.youtube.com/watch?v=QNn7qHUsyiA

I've reduced the testcase (see attachment). In Firefox 17.0.1 (same gecko that Instantbird is currently using), I see a similar behavior: the first line is repainted all the time, but the repainted area has the length of the newly inserted line.
When testing on a current nightly, the whole content area is redisplayed all the time.

I tested only on OS X 10.8.
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: