mirror of
https://github.com/servo/servo.git
synced 2025-07-08 07:53:40 +01:00
script: Properly root nodes with animating images (#37689)
This change fixes an issue and makes a few more minor improvements to the `ImageAnimationState`: 1. Image rooting and unrooted now happens in one step from `Window::update_animations_post_reflow`. 2. The `node_to_animating_image_map` is now stored as a shared `RwLock` so that it doesn't need to be taken and then replaced in the `ImageAnimationState` during reflow. This should prevent a hypothetical issue where image animations are restarted during empty reflows. 3. General naming and idiomatic Rust usage improvements. Testing: This doesn't really have any obvious behavioral changes, because all reflows currently trigger a restyle. It becomes a serious problem with #37677 and this change fixes the failing test there. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
b89a44c539
commit
a66a257b38
10 changed files with 107 additions and 118 deletions
|
@ -58,7 +58,10 @@ impl FragmentTree {
|
|||
// them. Create a set of all elements that used to be animating.
|
||||
let mut animations = layout_context.style_context.animations.sets.write();
|
||||
let mut invalid_animating_nodes: FxHashSet<_> = animations.keys().cloned().collect();
|
||||
let mut image_animations = layout_context.node_image_animation_map.write().to_owned();
|
||||
let mut image_animations = layout_context
|
||||
.node_to_animating_image_map
|
||||
.write()
|
||||
.to_owned();
|
||||
let mut invalid_image_animating_nodes: FxHashSet<_> = image_animations
|
||||
.keys()
|
||||
.cloned()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue