Closed Bug 1415485 Opened 7 years ago Closed 7 years ago

Make the pref layout.display-list.retain live again

Categories

(Core :: Web Painting, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: jwatt, Assigned: mikokm)

References

Details

Attachments

(2 files)

In bug 1411132 the pref layout.display-list.retain was made non-live (restart required) because of crashes. Unfortunately that breaks doing reftest runs in RDL-on-for-tests-and-off-for-references mode.
Blocks: 1382427
There are some problems with this that I can think of immediately. - Changing from not-retained to retained We are missing the information from the previous paint and do not know what has changed. We need to do a full rebuild with the retained builder. The solution is the same as below. - Changing from retained to not-retained to retained: The modified frames remain in the modified frame lists before the retained builder removes them, so we need to change the logic for the first retained display list build to ensure that we always perform a full build initially. We can detect this by the presence of modified frames prop and/or creation of the retained builder. - Changing from retained to not-retained: We set nsDisplayListBuilder::DisplayListBuildingDisplayPortRect() prop on frames, and it might still be set during the not-retained build, if the frame was not modified and processed by the retained builder. The same also applies to new nsIFrame fields nsIFrame::HasOverrideDirtyRegion() and nsIFrame::IsFrameModified(). I think we could fix these by also checking that we are doing a partial build.
Status: NEW → ASSIGNED
The latest Nightly produces text which flashes and disappears when layout.display-list.retain is enabled. No regression range at the moment.
Here's a site that produces the problem: https://www.facebook.com/pg/SmarTech407/about/?ref=page_internal Scroll up and down a few times then click on the links on the left such as Home, About, etc. They disappear. You can get them back by clicking somewhere else on the page. Happens to many sites.
Problem appears to have been corrected on the latest Inbound if not on Nightly.
This patch ensures that we clear the frame properties if the frame has RetainedDisplayListBuilder::Cached() property set and if the display list retaining is disabled.
Comment on attachment 8927915 [details] Bug 1415485 - Make the pref layout.display-list.retain live again https://reviewboard.mozilla.org/r/199170/#review204254
Attachment #8927915 - Flags: review?(matt.woodrow) → review+
Pushed by mikokm@gmail.com: https://hg.mozilla.org/integration/autoland/rev/32958aa32cb5 Make the pref layout.display-list.retain live again r=mattwoodrow
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Status: RESOLVED → REOPENED
Flags: needinfo?(mikokm)
Resolution: FIXED → ---
Target Milestone: mozilla59 → ---
Just in case this turns out to be hard to fix to make fully live, here's an alternative approach where the pref is live across document reloads. Basically the value is stored on a document's presContext when constructed and never updated across the lifetime of the document. That's not quite as nice as having it live across repaitns, but if I understand correctly it should work around the issues with the pref flipping between display list building. At any rate, it should be sufficient for reftest runs with RDL turned on for tests, off for refs.
Depends on: 1417601
Flags: needinfo?(mikokm)
Pushed by mikokm@gmail.com: https://hg.mozilla.org/integration/autoland/rev/bdab19ff2fef Make the pref layout.display-list.retain live again r=mattwoodrow
Status: REOPENED → RESOLVED
Closed: 7 years ago7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
This is yet another separate bug uncovered by this patch. :( I'll restore the previous (what should be unnecessary) check for invalidations and attempt to fix these issues in another bug.
Flags: needinfo?(mikokm)
Pushed by mikokm@gmail.com: https://hg.mozilla.org/integration/autoland/rev/72de8d8efe0d Make the pref layout.display-list.retain live again r=mattwoodrow
Status: REOPENED → RESOLVED
Closed: 7 years ago7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: