diff options
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index a3289cca56e..4554ac3210c 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -171,7 +171,7 @@ impl NodeFlags { impl Drop for Node { #[allow(unsafe_code)] fn drop(&mut self) { - self.style_and_layout_data.get().map(|d| d.dispose(self)); + self.style_and_layout_data.get().map(|d| self.dispose(d)); } } @@ -196,17 +196,15 @@ unsafe impl Send for OpaqueStyleAndLayoutData {} no_jsmanaged_fields!(OpaqueStyleAndLayoutData); -impl OpaqueStyleAndLayoutData { +impl Node { /// Sends the style and layout data, if any, back to the layout thread to be destroyed. - pub fn dispose(self, node: &Node) { + pub fn dispose(&self, data: OpaqueStyleAndLayoutData) { debug_assert!(thread_state::get().is_script()); - let win = window_from_node(node); - node.style_and_layout_data.set(None); - win.layout_chan().send(Msg::ReapStyleAndLayoutData(self)).unwrap(); + let win = window_from_node(self); + self.style_and_layout_data.set(None); + win.layout_chan().send(Msg::ReapStyleAndLayoutData(data)).unwrap(); } -} -impl Node { /// Adds a new child to the end of this node's list of children. /// /// Fails unless `new_child` is disconnected from the tree. @@ -292,7 +290,7 @@ impl Node { for node in child.traverse_preorder() { node.set_flag(IS_IN_DOC, false); vtable_for(&&*node).unbind_from_tree(&context); - node.style_and_layout_data.get().map(|d| d.dispose(&node)); + node.style_and_layout_data.get().map(|d| node.dispose(d)); } self.owner_doc().content_and_heritage_changed(self, NodeDamage::OtherNodeDamage); @@ -340,7 +338,7 @@ impl<'a> Iterator for QuerySelectorIterator { impl Node { pub fn teardown(&self) { - self.style_and_layout_data.get().map(|d| d.dispose(self)); + self.style_and_layout_data.get().map(|d| self.dispose(d)); for kid in self.children() { kid.teardown(); } |