Open Bug 730504 Opened 13 years ago Updated 3 years ago

Runfield has bad invalidation behaviour

Categories

(Core :: Graphics, defect)

x86_64
Linux
defect

Tracking

()

People

(Reporter: jrmuizel, Unassigned)

References

Details

(Whiteboard: maple)

Currently on Maple we often invalidate runfield twice per draw call. This has a number of causes which I'll file a dependent bugs.
This was revealed by 729537 which caused the nsHTMLScrollFrame to have a display port. Here's how it all happens: - Canvas does not properly clip invalidations to the size of the canvas (bug 730508) - Previously, these invalidations were clipped by the scroll port of the nsHTMLScrollFrame, but with a display port they are not. - These invalidations outside cause us to get an invalid region that's not a rect. - This region is split into rects and passed to nsWindow::Invalidate (bug 730509) - Each Invalidate() call queues up a Draw event. - Between Draw events, we can get NATIVE_POKE events in the queue (e.g. from the TimerThread) - Draws are only coalesced if they are contiguous (bug 730515) - Each draw will schedule a composite. - The following draws will upload the entire unchanged canvas - Sadness
Blocks: 729537
Depends on: 730508, 730509, 730515
Whiteboard: maple
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.