Closed Bug 1472053 Opened 7 years ago Closed 7 years ago

ViewManager::WillPaintWindow paints without calling WillRefresh observers

Categories

(Core :: Web Painting, enhancement, P2)

enhancement

Tracking

()

RESOLVED INVALID
Tracking Status
firefox63 --- affected

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

Details

Attachments

(1 file)

We believe this is the cause of most of the bug 1466010 crashes, though they're almost impossible to reproduce but it's hard to be sure. It looks like transitioning to fullscreen freezes the refresh driver, and then when we resume it (via EnsureTimerStarted) we update the mMostRecentRefresh value (which arguably is part of the problem). Animations read from this value, so the change can cause animations to change from running to finished. Normally when we paint from nsRefreshDriver::Tick, we call DocumentTimeline::WillRefresh, and this updates all animation state to the new time and invalidates correctly for any finished animations. In some cases we paint from outside the refresh driver, in this case because we called nsIWidget::Show. That triggers PuppetWidget::Paint, and nsViewManager::WillPaintWindow directly calls into painting code. This is effectively painting with animations in a broken state, so it looks like we decide we no longer have an animation (and don't build nsDisplayOpacity) even though there wasn't an invalidation. RDL trips up over this silent change. It seems like the simplest thing to do is to just forcibly tick the refresh driver in this case, rather than out-of-band painting.
Assignee: nobody → matt.woodrow
Attachment #8988643 - Flags: review?(tnikkel)
Dropped the review request for now since the try run wasn't even close to green.
Priority: -- → P2
Hiro figured out a better fix for bug 1466010, so I'm going to close this.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → INVALID
Component: Layout: View Rendering → Layout: Web Painting
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: