mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
compositing: Only make the compositor responsible for initiating reflow
for CSS transitions and animations, not `requestAnimationFrame()` callbacks. In the case of the latter, the script thread will kick off the reflow if it's necessary, so there's no need for the compositor to do it. Some pages, like nytimes.com, like to call `requestAnimationFrame()` without actually mutating the DOM in the callback. We should avoid reflowing in this case.
This commit is contained in:
parent
0e338d5b31
commit
f378f2807e
1 changed files with 7 additions and 4 deletions
|
@ -1191,10 +1191,13 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
}
|
||||
}
|
||||
|
||||
// We still need to tick layout unfortunately, see things like #12749.
|
||||
let msg = ConstellationMsg::TickAnimation(pipeline_id, AnimationTickType::Layout);
|
||||
if let Err(e) = self.constellation_chan.send(msg) {
|
||||
warn!("Sending tick to constellation failed ({}).", e);
|
||||
// We may need to tick animations in layout. (See #12749.)
|
||||
let animations_running = self.pipeline_details(pipeline_id).animations_running;
|
||||
if animations_running {
|
||||
let msg = ConstellationMsg::TickAnimation(pipeline_id, AnimationTickType::Layout);
|
||||
if let Err(e) = self.constellation_chan.send(msg) {
|
||||
warn!("Sending tick to constellation failed ({}).", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue