Stop ticking animations on non-dirty nodes during traversal.

This commit is contained in:
Bobby Holley 2016-10-20 09:47:18 -07:00
parent 99ad3678fa
commit b493565cc1
3 changed files with 5 additions and 12 deletions

View file

@ -1536,6 +1536,9 @@ impl ScriptThread {
let node = unsafe { node.get_jsmanaged().get_for_script() };
let window = window_from_node(node);
// Not quite the right thing - see #13865.
node.dirty(NodeDamage::NodeStyleDamaged);
if let Some(el) = node.downcast::<Element>() {
if &*window.GetComputedStyle(el, None).Display() == "none" {
return;

View file

@ -4,7 +4,6 @@
//! Traversing the DOM tree; the bloom filter.
use animation;
use context::{LocalStyleContext, SharedStyleContext, StyleContext};
use dom::{OpaqueNode, TNode, UnsafeNode};
use matching::{ApplicableDeclarations, ElementMatchMethods, MatchMethods, StyleSharingResult};
@ -367,17 +366,6 @@ pub fn recalc_style_at<'a, N, C>(context: &'a C,
node.set_restyle_damage(damage);
}
}
} else {
// Finish any expired transitions.
let mut existing_style = node.get_existing_style().unwrap();
let had_animations_to_expire = animation::complete_expired_transitions(
node.opaque(),
&mut existing_style,
context.shared_context()
);
if had_animations_to_expire {
node.set_style(existing_style);
}
}
let unsafe_layout_node = node.to_unsafe();

View file

@ -0,0 +1,2 @@
[basic-transition.html]
disabled: https://github.com/servo/servo/issues/13865